在基于唯一单元格值的分页网格视图中选择行

时间:2011-11-17 18:28:06

标签: c# asp.net linq gridview

我有一个启用了分页的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中找到匹配的行?

1 个答案:

答案 0 :(得分:1)

您应该将值添加为datakey,然后执行以下操作:

gvFrame.SelectedIndex = gvFrame.Rows.Cast<GridViewRow>().First(r => 
    (string)gvFrame.DataKeys[r.RowIndex]["foo"] == requestedFrame).RowIndex;
相关问题