存储 RowEditing 的 ID 而不是索引

Posted

技术标签:

【中文标题】存储 RowEditing 的 ID 而不是索引【英文标题】:Store ID of RowEditing Instead of Index 【发布时间】:2014-09-27 12:05:59 【问题描述】:

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

我正在尝试以下代码,但它没有返回除控件以外的任何内容。

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

     string value = GridView1.Rows[e.NewEditIndex].Cells[3].ToString();

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

【问题讨论】:

你想得到什么?你的问题不清楚。在哪种情况下,您试图获取值RowUpdating。更多代码将有助于理解问题。 单元格3的值,即编辑被点击的行的行ID。 单元格#3 是声明为BoundField 还是ItemTemplate 好的,我更新了上面的代码,没有单元格 3 也不是。 【参考方案1】:

使用单元格的 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 属性。

【讨论】:

以上是关于存储 RowEditing 的 ID 而不是索引的主要内容,如果未能解决你的问题,请参考以下文章

从 GridView 获取正在编辑的行的 id

D3 强制布局 - 按名称而不是索引链接节点

用索引而不是名称指定列

Select2 发布 ID 而不是文本

为啥这个查询使用 where 而不是索引?

如何使用 MongoDB 中的自定义字段对分页进行索引和排序,例如:名称而不是 id