0

さまざまな行で満たされたデータテーブルがあり、それぞれにいくつかの列(つまり、ID、名前、説明など)があります。

ユーザーがIDや名前などのコンボボックスを介して列を選択し、検索ボタンをクリックした後、テキストボックスに要求された検索を入力する検索ボタンを実装しようとしています。キーとしてテーブルを再ソートせずに画面上で選択して強調表示すると、テーブルが最初に入力された順序ですべてが保持されます。別の注意点は、すべてのアイテムを表示したままにしたいので、別のボタンに既に実装されている .rowfilter を使用しないことです。インデックスを介して行を見つける方法を理解し、それに応じてコードを更新しました。上記の行の画面を中央に配置し、テーブルの順序を混同せずに強調表示する方法を考えているだけです

これが私がこれまでに持っているものです:

private void buttonSearch_Click(object sender, EventArgs e)
{
    string query = textSearch.Text;
    int intquery = Int32.Parse(query);
    DataTable dt = GetAlarmTable();
    DataView dv = new DataView(dt);
    DataRow[] foundRows;
    switch (comboboxSearch.Text)
    {
         case "ID":
         {

              dv.Sort = "ID"; 
              index = dv.Find(intquery);
              foundRows = dt.Select("ID = '" + intquery + "'");
              break;
          } 
    }
//??? ???

}

共有するコード、アイデア、またはリンクがある場合はお知らせください。

4

1 に答える 1

0

これが私が通常使う関数です。に設定されているSelectionModeプロパティがあることを確認してください。DataGridViewFullRowSelect

public static void EnsureGridRowIsSelectedAndVisible(DataGridViewRow row)
{
    if (row == null)
        return;

    row.Selected = true;

    // Center the item in the display
    row.DataGridView.FirstDisplayedScrollingRowIndex = 

        Math.Max(row.Index - Convert.ToInt32(row.DataGridView.DisplayedRowCount(false) / 2), 0);
}
于 2012-05-19T17:07:08.410 に答える