我有一个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++;
}
有没有更好的方法?
答案 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中更改它并更改数据源。