我想根据单元格值检索网格视图行。例如,我有一个包含4列(名称,m1,m2,m3)的网格视图,名称包含唯一值。所以,我想获得与指定名称对应的网格视图行。
由于
答案 0 :(得分:1)
以防我在下面留下WinForm DataGridView方法。
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();
以防万一。
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;
}
}
然后需要更多代码才能做到这一点,但你明白了。现在,如果您不想,则无需显示“名称”列。