当我可以搜索行时,Gridview选中的行自动显示在Gridview行的顶部
本文关键字:Gridview 显示 顶部 搜索 我可以 | 更新日期: 2023-09-27 18:11:26
当搜索行被选中时,被选中的行将自动显示在gridviewrow的顶部并突出显示以前的数据,但被选中的行索引改变。
问题是我在gridview中有1000行数据,当我可以搜索500行,所以500行显示在gridview行和其他数据也显示在gridview上。
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToInt32(row.Cells[0].Value) == Convert.ToInt32(txt_empc.Text))
{
row.Selected = true;
//when search row selected then selected row show on top of gridviewrow
//automatically with highlighted and previous data also show but selected
//row index change
}
}
你可以试着这样做:将CurrentCell赋值给foundationline,使它成为第一个显示的
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToInt32(row.Cells[0].Value) == Convert.ToInt32(txt_empc.Text))
{
row.Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[row.Index].Cells[0];
break;
}
}
或使用linq更好:
foreach (DataGridViewRow row in dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(row => Convert.ToInt32(row.Cells[0].Value) == Convert.ToInt32(txt_empc.Text)))
{
row.Selected = true;
dataGridView1.CurrentCell = dgwDistinte.Grid.Rows[row.Index].Cells[0];
break;
}
尝试这个代码,但它不是一个优化的一个优化它自己,让我知道,如果你找到一个更好的解决方案,它需要10分钟为我!:/:!
List<DataGridViewRow>selectedRows = new List<DataGridViewRow>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToInt32(row.Cells[2].Value) == Convert.ToInt32(txt_empc.Text))
{
selectedRows.Add(row);
dataGridView1.Rows.Remove(row);
////when search row selected then selected row show on top of gridviewrow automatically with highlighted and previous data also show but selected row index change
}
row.Selected = false;
}
foreach (DataGridViewRow row in selectedRows)
{
dataGridView1.Rows.Insert(0,row);
dataGridView1.Rows[0].Selected = true;
}