C# ASP.Net:在编辑和删除时从GridView获取数据键
我使用的是一个C# ASP.Net:在编辑和删除时从GridView获取数据键,c#,asp.net,gridview,C#,Asp.net,Gridview,我使用的是一个GridView控件,它被数据绑定到从实用程序方法返回的对象的列表中。GridView控件将其中一列设置为其数据键。当一行被选中时,它会触发选中的事件处理程序,我可以使用myGridView.SelectedDataKey.Value来获取选中行的DataKey列的值 但是,当一行被编辑或删除时的事件处理程序似乎没有获取相关行的DataKey值的机制。这些事件处理程序的event arg参数包含GridView中的行索引,但我特别在DataKey值之后 由于对象列表可能已更改,因此
GridView
控件,它被数据绑定到从实用程序方法返回的对象的列表中。GridView
控件将其中一列设置为其数据键。当一行被选中时,它会触发选中的事件处理程序,我可以使用myGridView.SelectedDataKey.Value来获取选中行的DataKey列的值
但是,当一行被编辑
或删除
时的事件处理程序似乎没有获取相关行的DataKey值的机制。这些事件处理程序的event arg参数包含GridView
中的行索引,但我特别在DataKey值之后
由于对象列表可能已更改,因此不能通过实用程序方法以及从事件arg参数获取的索引重新获取对象列表
谁能告诉我怎么做
TIA您可以使用编辑/删除事件返回的索引号,然后手动选择行
String yourDataKey = GridView.DataKeys[e.NewSelectedIndex].Item["youfield"].tostring();
protectedvoidbtndelete\u单击(对象发送方,事件参数e)
{
尝试
{
int i;
Con.Open();
cmd=新的SqlCommand(“USP_寄存器”,Con);
cmd.CommandType=CommandType.storedProcess;
cmd.Parameters.AddWithValue(“@P_chu ACTION_CODE”,“D”);
对于(i=0;i以下是我的解决方案:
在gridview中设置DataKeyNames=“id”。这样,行将有一个datakey
然后在Grd_RowDataBound中向按钮添加一个属性,如下所示:
LinkButton Btn= (LinkButton)e.Row.FindControl("BtnDelete");
if (Btn!= null)
{
Btn.Attributes.Add("ROW_INDEX", e.Row.RowIndex.ToString());
}
然后在OnClick事件中使用以下命令:
int rowIndex= Convert.ToInt32(((LinkButton)sender).Attributes["ROW_INDEX"].ToString());
int id= Convert.ToInt32(Grd.DataKeys[rowIndex].Value);
您在gridview的回发中获得了datakey值
LinkButton Btn= (LinkButton)e.Row.FindControl("BtnDelete");
if (Btn!= null)
{
Btn.Attributes.Add("ROW_INDEX", e.Row.RowIndex.ToString());
}
int rowIndex= Convert.ToInt32(((LinkButton)sender).Attributes["ROW_INDEX"].ToString());
int id= Convert.ToInt32(Grd.DataKeys[rowIndex].Value);