0

在我的项目中,我试图在将 DataGridView 与 DataSet 绑定后更改其列中的值。像这样的东西:

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 回答