2011-08-02 23 views
1

DataGridViewでセルのインデックスを取得するにはどうすればよいですか?列ヘッダtext = "something"で、行に "somethings"が含まれていますか?DataGridView内の特定のセルを検索するにはどうすればよいですか?

+0

[DataGridViewコントロールでフィルタリングを実装するにはどうすればいいですか? /stackoverflow.com/questions/5087095/how-can-i-implement-filtering-in-the-datagridview-control) – kd7

答えて

1

DataGridView列に直接アクセスすることはできません。あなたはこのような何かをする必要があるでしょう:

int FindCellRowIndex(string columnName, string rowContent){ 
    foreach (DataGridViewRow row in dgView.Rows){    
      foreach (DataGridViewCell cell in row.Cells){ 
       if(cell.OwningColumn.Name() == columnName && cell.Value != null && Convert.Tostring(cell.Value) == rowContent) 
        return row.Index; 
      }    
    } 
    return -1; 
} 
+0

アドバイスありがとうございます。私は同じことをしようとしていたが、あなたのコードの問題は、私がcolを入力してドロップドットのメニューセルのプロパティが欠落している点です。私がcol.Cellを書くと例外が発生します:エラー 'System.Windows.Forms.DataGridViewColumn'に 'Cells'と拡張メソッド 'Cells'の定義が含まれていません –

+0

私は悪いです。 DataGridViewColumnのセル。しかし、あなたはDataGridViewRowでそれを行うことができます。私は、コードを修正し、それをチェックアウトします。問題は、すべてのセルを繰り返し処理する必要があるため、効率的ではありません。誰かがより良い方法を知っているなら、教えてください –

0

はその後、GridViewRowCollection、個々のGridViewRowの各セルを反復処理する必要があります。これを行うと、セルのテキストプロパティを取得できます。別のオプションは、FindControlを使用して適切なプロパティを抽出することです。 .FindControl()メソッドを使用して、セル内の実際のコントロール(ラベル、リテラル、チェックボックスなど)を見つけたり、インデックスを使用したりすることができます。

関連する問題