基于唯一单元格值检索GridView行

时间:2009-07-08 16:18:26

标签: c# .net asp.net gridview filter

我想根据单元格值检索网格视图行。例如,我有一个包含4列(名称,m1,m2,m3)的网格视图,名称包含唯一值。所以,我想获得与指定名称对应的网格视图行。

由于

2 个答案:

答案 0 :(得分:1)

编辑:我意识到你可能意味着ASP.NET GridView不是WinForm DataGridView,这是我最初的答案。在这种情况下,方法非常不同。

以防我在下面留下WinForm DataGridView方法。

ASP.NET GridView

GridView有点烦人,因为它不允许您按列名访问单元格。相反,你需要知道索引。你可以硬编码,但那是不可取的。

硬编码方法:

string searchValue = "SpecifiedName";
// where 1 is the hardcoded cell index
var query = from GridViewRow row in GridView1.Rows
            where row.Cells[1].Text == searchValue
            select row;
GridViewRow result = query.FirstOrDefault();

动态方法(列索引查找):

string colName = "name";
int index = (from DataControlField col in GridView1.Columns
            where col.HeaderText == colName
            select GridView1.Columns.IndexOf(col)).FirstOrDefault();

// index used
var query = from GridViewRow row in GridView1.Rows
        where row.Cells[index].Text == searchValue
        select row;
GridViewRow result = query.FirstOrDefault();

替代索引查找:而不是使用HeaderText,您可以使用BoundField。

int index = (from DataControlField col in GridView1.Columns
            where ((BoundField)col).DataField == colName
            select GridView1.Columns.IndexOf(col)).FirstOrDefault();

WinForm DataGridView

以防万一。

string name = "SpecifiedName";
var query = from DataGridViewRow row in dataGridView1.Rows
            where row.Cells["name"].Value.ToString() == name
            select row;
// the row will be returned by this or contain a default value if not found
DataGridViewRow result = query.FirstOrDefault();

答案 1 :(得分:1)

这是DataKey属性的用途。所以:GridView1.DataKeyNames =“name”

找到你的比赛:

   foreach (GridViewRow gvr in GridView1.Rows)
    {
        if (GridView1.DataKeys[gvr.RowIndex].ToString().Equals("mymatch"))
        {
            GridView1.SelectedIndex = gvr.RowIndex;
            break;
        }
    }     

然后需要更多代码才能做到这一点,但你明白了。现在,如果您不想,则无需显示“名称”列。