1、必须用VB.NET 2、数据库链接采用OLEDB我的代码如下:Private Sub dgrOrganize_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgrOrganize.ItemCommand If e.CommandName = "Delete" Then
cnn = New OleDbConnection(System.Configuration.ConfigurationSettings.GetConfig("ConnectionString"))
cmm = New OleDbCommand("delete from tOrganize where orid = ?id", cnn)
Dim parm1 = New OleDbParameter("?id", OleDbType.VarChar)
parm1.Value = Me.dgrOrganize.DataKeys(e.Item.ItemIndex)
cmm.Parameters.Add(parm1)
cnn.Open()
cmm.ExecuteNonQuery()
cnn.Close()
SetBind()
End If
End Sub错误信息如下:索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误:
行 60: cmm = New OleDbCommand("delete from tOrganize where orid = ?id", cnn)
行 61: Dim parm1 = New OleDbParameter("?id", OleDbType.VarChar)
行 62: parm1.Value = Me.dgrOrganize.DataKeys(e.Item.ItemIndex)
行 63: cmm.Parameters.Add(parm1)
行 64: cnn.Open()
cnn = New OleDbConnection(System.Configuration.ConfigurationSettings.GetConfig("ConnectionString"))
cmm = New OleDbCommand("delete from tOrganize where orid = ?id", cnn)
Dim parm1 = New OleDbParameter("?id", OleDbType.VarChar)
parm1.Value = Me.dgrOrganize.DataKeys(e.Item.ItemIndex)
cmm.Parameters.Add(parm1)
cnn.Open()
cmm.ExecuteNonQuery()
cnn.Close()
SetBind()
End If
End Sub错误信息如下:索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误:
行 60: cmm = New OleDbCommand("delete from tOrganize where orid = ?id", cnn)
行 61: Dim parm1 = New OleDbParameter("?id", OleDbType.VarChar)
行 62: parm1.Value = Me.dgrOrganize.DataKeys(e.Item.ItemIndex)
行 63: cmm.Parameters.Add(parm1)
行 64: cnn.Open()
if(e.Item.ItemIndex>-1) then
If e.CommandName = "Delete" Then
cnn = New OleDbConnection(System.Configuration.ConfigurationSettings.GetConfig("ConnectionString"))
cmm = New OleDbCommand("delete from tOrganize where orid = @id", cnn)
Dim parm1 = New OleDbParameter("@id", OleDbType.VarChar)
parm1.Value = Me.dgrOrganize.DataKeys(e.Item.ItemIndex)
cmm.Parameters.Add(parm1)
cnn.Open()
cmm.ExecuteNonQuery()
cnn.Close()
SetBind()
End If
end if
End Sub
-----------
你可以把多个主键合并起来,生成一个独立的主键
比如
select id1 & '|' & id2 as id,xx,xx from table
这样id就是你的主键,返回的时候,选在代码里面将取到的主键切割开,然后分别授予SQL的条件即可.