我有一个启用了分页的gridview和一个文本框,用户可以在其中输入一个字符串值,用于在gridview中选择一个与字符串值匹配的列。列的数据不是主键,并且未列在datakeynames中。
我找到了一个解决非寻呼网格视图问题的例子。在与文本框关联的按钮控件的事件处理程序中:
protected void SelFrame_Clicked(object sender, EventArgs e)
{
string requestedFrame = tbSelFrame.Text;
if (requestedFrame != "")
{
int index = (from DataControlField col in gvFrame.Columns
where col.HeaderText == "Name"
select gvFrame.Columns.IndexOf(col)).FirstOrDefault();
var query = from GridViewRow row in gvFrame.Rows
where row.Cells[index].Text == requestedFrame
select row;
GridViewRow result = query.FirstOrDefault();
if (result != null)
{
int selectedIndex = result.DataItemIndex;
if (selectedIndex > -1)
gvFrame.SelectedIndex = selectedIndex;
}
}
}
如上所述,当搜索的值位于gridview的不可见页面上时,此行返回null:
GridViewRow result = query.FirstOrDefault();
如何在启用分页的gridview中找到匹配的行?
答案 0 :(得分:1)
您应该将值添加为datakey,然后执行以下操作:
gvFrame.SelectedIndex = gvFrame.Rows.Cast<GridViewRow>().First(r =>
(string)gvFrame.DataKeys[r.RowIndex]["foo"] == requestedFrame).RowIndex;