当我可以搜索行时,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
    }
}

当我可以搜索行时,Gridview选中的行自动显示在Gridview行的顶部

你可以试着这样做:将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;
            }