通过Datakeynames获取Gridview行

时间:2011-09-08 09:57:13

标签: c# asp.net gridview

我有一个gridview,它有datakeynames="Id"

我在代码文件中有这个ID。现在我想得到一个特定Id的行。

例如Id = 1然后我想得到id = 1的gridview行 我用过这段代码:

foreach (DataKey key in gdvMainList.DataKeys)
                {
                    if (Convert.ToInt32(key.Value) == consentReleaseId)
                    {
                        gdvMainListRow = gdvMainList.Rows[index];
                        break;
                    }
                    index++;
                }

有没有更好的方法?

3 个答案:

答案 0 :(得分:4)

另一个选项是循环遍历GridView中的项目,直到找到匹配的键。

foreach (GridViewRow row in GridView1.Rows)
{
    if (GridView1.DataKeys[row.RowIndex]["ID"] == consentReleaseId)
    {
        gdvMainListRow = row;
        break;
    }
}

答案 1 :(得分:1)

另一种选择是将行ID绑定到gridview行中的元素。大多数情况下,这发生在CommandArgument属性上的操作链接或按钮上。

<asp:ButtonField  ButtonType="Button" CommandName="Edit" Text="Edit" Visible="True" CommandArgument='<%# Container.DataItemIndex %>' />
这样的事情。然后,您可以访问该项目并获取行ID而无需任何循环。

答案 2 :(得分:0)

你的apporach应该注意的一件事是,如果你在gridview中有分页,如果你在不同的页面,你最终可能会拉出错误的行,或者可能找不到行。

您可以在数据源上使用linq查询,而不是循环,例如

如果您的数据源是列表, obj = lObjs.Where(i =&gt; i.Id == consentReleaseId).First();

如果要更改网格中的内容,可以在obj中更改它并更改数据源。