2012-02-16 9 views
0

DGVのクリックイベントがデータテーブルを通じてバインドされています。チェックボックス列がチェックされると、選択された行が検証され、メッセージボックスを通じて条件がユーザーに提示されます。ユーザーが「はい」をクリックすると、データテーブル内の備考欄が編集されます。私の問題は、私はチェックマークを保持する必要があります。 AcceptChanges()の後に消えます。データソースを編集した後、DGVのチェックボックス列をプログラムでチェックできませんか?

ここで私が試したことがあります。

DialogResult OptScndary = MessageBox.Show("This employee's primary position is not required for the project but the secondary position is. Would you like to request this employee for his/her secondary position?", "Secondary Position", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 

if (OptScndary == DialogResult.Yes) 
{ 
    DataRow[] Row = AvailableEmp_dataTable.Select("EmpID='" + Sel_EmpID + "'"); 
    Row[0]["Remarks"] = "Secondary position requested"; 
    AvailableEmp_dataTable.AcceptChanges(); 

    RequestBtn.Enabled = true; 

    foreach (DataGridViewRow DGVRow in EmpInfoGrid.Rows) 
    { 
      if (DGVRow.Cells["EmpID"].Value.ToString().Equals(Sel_EmpID)) 
      { 
       DGVRow.Cells[MarkColumn.Name].Value = true; 
      } 
    } 
} 
+0

タイトルに「C#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

+0

チェックボックスの列は、基本となる結果にバインドされているかどうかを確認します。 – kaj

+1

DataGridViewを再バインドしていますか? –

答えて

1

チェックローのコレクションを作成します。 IDを保存し、DataGridViewRowAdding(正確な名前についてはわからない)イベントにプロシージャを追加して、チェックされた行のコレクションに基づいてチェックボックスの値を変更します。

+0

Phillipの方法を使用できます。 RowAddedイベントを使用できます。チェックボックスを見つけて、行IDが保存したコレクションと一致する場合は、チェックボックスをオンにします。ここをクリックhttp://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview_events.aspx。 –

+0

なぜ私はRowAddedイベントを使用する必要があるのか​​分かりません。私は新しい行を追加していません。選択した行の注釈を編集していますか? – RMSP

+0

編集後に発生するイベントを確認してください。そこで何かできること –

0

このリンクをクリックします。我々はDataGridViewのを再バインドするたびに

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx 

rowdataboundイベントが起動されます。チェックボックスをオンにすると、チェックボックスがオンになっている行を収集するだけです。ユーザーがチェックボックスをチェックすると、ロジックを処理してから、datagridviewとrowdataboundイベントを再バインドし、チェックボックスのチェックイベント中に収集したコレクション内の格納されたIDと行を一致させ、一致する場合は、それをチェックしてください。

これが役に立ちます。

関連する問題