Dim i As Integer
Dim database1 As DataTable
Dim str As String
str = ""
For i = GridView1.Rows.Count - 1 To 0 Step -1
Dim cb As CheckBox
cb = GridView1.Rows(i).Cells(0).FindControl("del")
If cb.Checked = True Then
database1 = returntable("delete from Sys_works where tId=' " & GridView1.DataKeys(i).Value.ToString() & " ' ")
End If
Next
我这个代码可以实现删除选中的一条记录,然后会报错
我知道是因为数据表发生变动,记录移位了才会报错
但是我想不到办法解决,各位大侠,高手,帮我想想办法啊
Dim database1 As DataTable
Dim str As String
str = ""
For i = GridView1.Rows.Count - 1 To 0 Step -1
Dim cb As CheckBox
cb = GridView1.Rows(i).Cells(0).FindControl("del")
If cb.Checked = True Then
database1 = returntable("delete from Sys_works where tId=' " & GridView1.DataKeys(i).Value.ToString() & " ' ")
End If
Next
我这个代码可以实现删除选中的一条记录,然后会报错
我知道是因为数据表发生变动,记录移位了才会报错
但是我想不到办法解决,各位大侠,高手,帮我想想办法啊
然后统一执行sql语句
delete from Sys_works where tid in (....)//符合条件的id
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 无法找到表 0。源错误:
行 20: End If
行 21: da.Fill(ds)
行 22: Return ds.Tables(0)
行 23: End Function
行 24: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
顺便说一下,你确定单引号里边有那些空格吗?如果是多余的空格肯定会经常造成错误的结果。
da.Fill(ds)
Return ds.Tables(0) =》da.Fill(ds)
Return IIF(ds.Tables.Count>0,ds.Tables(0),Nothing)
delete而已,返回个什么Table?干么不是直接执行语句,而是要获取返回数据表?这程序什么意思?算了,不管了。
C#是
CheckBox cb;
cb = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("del"); 请问VB该怎么写?
---------------------------------------------------------------
答案是错误的,正确应该如下:
Dim cb As CheckBox =TryCast(GridView1.Rows(i).Cells(0).FindControl("del"), CheckBox)IF cb IsNot Nothing Then
End IF