Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net:在编辑和删除时从GridView获取数据键_C#_Asp.net_Gridview - Fatal编程技术网

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);