-5

検索行を選択すると、選択した行が gridviewrow の上に自動的に表示され、以前のデータも表示されますが、選択された行のインデックスが変更されます。

質問は、500行を検索できるときにグリッドビューに1000行のデータがあるため、500行がグリッドビュー行の上に表示され、他のデータもグリッドビューに表示されます。

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
    }
}
4

2 に答える 2

0

あなたはこれを試すことができます:CurrentCellを確立されたラインに割り当てて、最初に表示されるようにします

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;
}
于 2013-04-29T15:19:51.730 に答える
0

このコードを試してみてください。最適化されたものではありません。自分で最適化してください。より良い解決策が見つかったらお知らせください。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;
            }
于 2013-04-29T16:54:42.227 に答える