0

私のプロジェクトでは、DataSet にバインドした後、DataGridView の列の値を変更しようとしています。このようなもの:

dgvMain --> DataGridView
dsMainPatients --> DataSet
dsMainDoctors -->  DataSet

  dgvMain.DataSource = null;
  dgvMain.DataSource = dsMainPatients.Tables[0];

foreach (DataGridViewRow r in dgvMain.Rows)
{
    DataGridViewTextBoxCell txt = new DataGridViewTextBoxCell();
    for (int intCount = 0; intCount < dsMainDoctors.Tables[0].Rows.Count; intCount++)
    {
        if (r.Cells[4].Value.ToString().Equals(dsMainDoctors.Tables[0].Rows[intCount][0].ToString()))
        {
             txt.Value = dsMainDoctors.Tables[0].Rows[intCount][1].ToString();
             r.Cells[4] = txt;   //dgvMain[4, r.Index] = txt; (also tried)
        }
    }                            
 }

私の解決策は、ifステートメントに正常に入力され、正しい値を保持していますが、以前の値と同じであるためにtxt何が起こっているのかわかりません。 グリッド列の値が変化していなくても、すべて正しい..それらを変更するには?r.Cells[4]

4

1 に答える 1

1

CellFormatting次のイベントを使用する必要がありますDataGridView

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 4)
    {
         for (int intCount = 0; intCount < dsMainDoctors.Tables[0].Rows.Count; intCount++)
         {
             if (e.Value.ToString().Equals(dsMainDoctors.Tables[0].Rows[intCount][0].ToString()))
             {
                  e.Value = txt.Value = dsMainDoctors.Tables[0].Rows[intCount][1].ToString();
             }
         }
     }
}
于 2012-11-14T13:47:16.230 に答える