RowEditing的商店ID而不是Index

时间:2014-08-04 22:17:53

标签: c# sql asp.net gridview

在我的应用程序中,我为用户提供搜索数据库的选项。当他们单击编辑时,我希望GridView仅通过存储其ID来显示他们正在更新的行。

我正在尝试以下代码,但它不会返回除Control之外的任何内容。

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
     string value = GridView1.Rows[e.NewEditIndex].Cells[3].ToString();
}

关于如何存储我正在寻找的价值的任何想法?

1 个答案:

答案 0 :(得分:2)

使用单元格的Text属性

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
     string value = GridView1.Rows[e.NewEditIndex].Cells[3].Text;

     // or 
     string value = GridView1.Rows[e.NewEditIndex].Cells[3].Value;
}

或者如果您已将控件声明为<TemplateField>,并且您尝试获取其值,请尝试

string value = ""
Label lblID = (Label)GridView1.Rows[e.NewEditIndex].FindControl("lblID");
value = lblID.Text;

另一种方法是为gridview添加DataKeyNames="ID",您可以使用

检索
 // assuming that the value of your datakey is numeric value 
 long Id = long.Parse(GridView1.DataKeys[e.NewEditIndex].Values["ID"].ToString());   

注意,您可以将多个逗号分隔值添加到DataKeyNames属性。