2016-10-20 14 views
-1

データベースからデータを取得して変更するには、データが 'Y'に等しい場合、DataGridviewのチェックボックスをオンにする方法。c#datagridviewチェックボックス

回答はstackoverflowで検索しましたが、失敗しました。任意の助けをいただければ幸いです

コードの '**'部分は私が問題を抱えているところです。これまで

私のコード:

using(getConnection.sqlCmd = new SqlCommand(sqlQuery,getConnection.sqlcon)) 
      { 
       using(var reader = getConnection.sqlCmd.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         col1 = reader.GetValue(0).ToString(); 
         **foreach(DataGridView row in dgvAccident.Rows) 
         { 
          DataGridViewCheckBoxCell chk = dgvAccident.Rows[0].Cells[4] as DataGridViewCheckBoxCell; 
          if (col1.Equals('Y')) 
           chk.Selected = true; 
          else 
           chk.Selected = false; 
         }** 
        } 

       } 
      } 

答えて

0

利用ValueDataGridViewCellのプロパティの代わりに、Selected

foreach(DataGridView row in dgvAccident.Rows) 
{ 
    dgvAccident.Rows[0].Cells[4].Value = (col1.Equals('Y')); 
} 

が、あなたのコードがオフに思えます。 DBから返された各行ですべての行のチェックボックスを再確認します。おそらく、DataGridViewの行がDBから返された行に対応するかどうかを確認してから、値をチェックしてください。

0

試行錯誤の多くの後、私は最終的に私はプログラムが範囲外のインデックスを実行する場合ていることを確認しようとキャッチでこれを入れたのではないしてくださいことを完全に

using(getConnection.sqlCmd = new SqlCommand(sqlQuery,getConnection.sqlcon)) 
      { 
       using(var reader = getConnection.sqlCmd.ExecuteReader()) 
       { 
        int x = 0; 
        try 
        { 
         while (reader.Read()) 
         { 
          col1 = reader.GetValue(0).ToString(); 

          if (col1.Equals("Y")) 
          { 
           dgvAccident.Rows[x].Cells[4].Value = true; 
           ++x; 
          } 
          else 
           if (col1.Equals("N")) 
           { 
            dgvAccident.Rows[x].Cells[4].Value = false; 
            ++x; 
           } 
         } 
        } 

を機能するソリューションを考え出しました私はエラーをキャッチした、私は非常に誰もこのコードを使用してtryキャッチの中に置くことをお勧めします。

関連する問題