Winform C#更新DataTable上的DataGridView Cell值已更改

时间:2015-08-21 12:32:57

标签: c# winforms datagrid

我有DataGridView和DataTable,DataTable被指定为DataGridView中的数据源。

当我在DataTable中更改某个值时,它不会在视图上更新。

那么我怎么能实现这个

我尝试过以下事情

  1. 的BindingSource
  2. 刷新()
  3. 演示代码

    DataGridView datagrid = new DataGridView();
    DataTable dt = new DataTable();
    
    dt.Columns.Add("No");
    dt.Columns.Add("Name");
    
    for (int i = 1; i <= 10; i++)
    {
         DataRow row = dt.NewRow();
         row[0] = i;
         row[1] = "ABC";
         dt.Rows.Add(row);
    }
    
    datagrid.DataSource = dt;
    

    这是我上面的代码

    当我在DataTable中更改某个值时,它不会反映在DataGridView

    dt.Rows[0][1] = "XYZ";
    

    所以请帮帮我....

2 个答案:

答案 0 :(得分:1)

我能够这样做,这有效:

private DataTable _dt = new DataTable();  

private void Form1_Load(object sender, EventArgs e)
{

    _dt.Columns.Add("LongText");
    DataRow dr = _dt.NewRow();
    dr[0] = "One";
    _dt.Rows.Add(dr);
    dr = _dt.NewRow();
    dr[0] = "Two";
    _dt.Rows.Add(dr);
    dr = _dt.NewRow();
    dr[0] = "Three";
    _dt.Rows.Add(dr);
    dataGridView1.DataSource = _dt;
}

private void button1_Click(object sender, EventArgs e)
{
    _dt.Rows[0][0] = "daddy";
}

答案 1 :(得分:1)

您需要将数据网格添加到表单中,如下所示:

    private void Form1_Load(object sender, EventArgs e)
    {
        DataGridView datagrid = new DataGridView();

        DataTable dt = new DataTable();

        //add this line
        Controls.Add(datagrid);

        dt.Columns.Add("No");
        dt.Columns.Add("Name");

        for (int i = 1; i <= 10; i++)
        {
            DataRow row = dt.NewRow();
            row[0] = i;
            row[1] = "ABC";
            dt.Rows.Add(row);
        }

        datagrid.DataSource = dt;

        dt.Rows[0][1] = "XYZ";
    }

结果:

enter image description here