2017-04-08 11 views
0

WindowsアプリケーションでDataGridを使用するMicrosoft Excelの検索シート(DataGrid)のような検索オプションを有効にします。DataGridViewをループする行と列を検索する

foreach (DataGridViewRow row in DisplayGridView.Rows) 
     { 
      foreach (DataGridViewCell cell in row.Cells) 
      { 
       if (cell.Value == searchValue) 
       { 
        cell.Selected = true; 
        break; 
       } 
      } 
     } 

私は上記の方法を試しましたが、結果が得られませんでした。私はこのコードをインプリメントしています。

​​

しかし、結果は誰でもコードを提案できます。

答えて

0

null値をチェックしていないと仮定しています。これらのヌル値チェックを追加すると、あなたが記述したとおりに動作するように見えます。行にToString()メソッドを追加すると、の後にcell.Value == searchValueの後に比較が成功します。また、休憩は必要ありません。

DisplayGridView.ClearSelection(); 
foreach (DataGridViewRow row in DisplayGridView.Rows) { 
    foreach (DataGridViewCell cell in row.Cells) { 
    if (cell.Value != null) { 
     if (cell.Value.ToString() == searchValue) { 
     cell.Selected = true; 
     } 
    } 
    } 
} 

次の方法

DisplayGridView.ClearSelection(); 
foreach (DataGridViewRow row in DisplayGridView.Rows) { 
    for (int i = 0; i < DisplayGridView.Columns.Count; i++) { 
    if (row.Cells[i].Value != null) { 
     if (row.Cells[i].Value.ToString().Equals(searchValue)) { 
     row.Cells[i].Selected = true; 
     } 
    } 
    } 
} 

検索文字列がセルの文字列に含まれている場合、セルを強調表示したい場合は、あなただけには含まれていequalsメソッドを変更する必要があります。

DisplayGridView.ClearSelection(); 
    foreach (DataGridViewRow row in DisplayGridView.Rows) { 
    foreach (DataGridViewCell cell in row.Cells) { 
     if (cell.Value != null) { 
     if (cell.Value.ToString().Contains(searchValue)) { 
      cell.Selected = true; 
     } 
     } 
    } 
    } 

これが役に立ちます。

+0

ありません、これは動作しない。(私は –

+0

、私はそれを実行したとき、私は作品を掲載コードをあなたのコードを試してみましたどのようなエラーあなたは何の結果は次に – JohnG

+0

なっている。?をあなたはそれをデバッグする必要があります。検索値が一致し、セルが選択に設定されている場所にメッセージボックスを置く。メッセージボックスが表示され、セルが選択されていない場合、 –

関連する問題