0

行の文字列のインデックスを見つけたいのですDataGridViewが、コードは次のとおりです。

 DataGridViewRow row = dgvVisual.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => (string)r.Cells[0].Value == "9");

しかし、の戻り値rowはのnull代わりに、DataGridViewRowこの問題を解決する方法は?

コード全体はここにあります:

   SqlCommand cmd;
   cmd = new SqlCommand("select * from MyTable , SqlConnection);
     SqlDataReader read;
            read = cmd.ExecuteReader();

            while (read.Read())
            {
                int ColIndex= int.Parse(read["ColumnName"].ToString()) + 1;
                int RowIndex = -1;
                DataGridViewRow row = dgvVisual.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => (string)r.Cells[0].Value == (string)read["ColumnNameB"].ToString().Trim());
                if (row != null)
                    RowIndex = row.Index;
                DataGridViewCheckBoxCell chkbxCell = (DataGridViewCheckBoxCell)dgvVisual[ColIndex, RowIndex];
                chkbxCell.Value = true;

            }
            read.Close();

データベースに問題があり、リードバックが正しくなかったため、問題は解決しました。

4

1 に答える 1

1

が原因でnullが返されますFirstOrDefault()。これは、クエリで結果が見つからなかったことを意味します。その条件の行が実際にあることを確認してください。

データを見ずに、ラムダクエリが正しいかどうかを判断するのは困難です。

于 2012-08-06T07:43:43.257 に答える