2015-08-21 107 views
0

我有DataGridView和DataTable,DataTable在DataGridView中作为数据源分配。Winform C#在DataTable上更新DataGridView单元格值已更改

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

所以,我怎样才能实现这一目标

我曾尝试下面的事情

  1. 的BindingSource
  2. 刷新()

演示代码

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"; 

所以请帮助我....

+0

在什么情况下,你改变了价值? – thewisegod

+0

@thewisegod一些按钮单击事件我改变数据表中的值 –

+0

如何从click事件中获取对数据表的引用?数据表是在页面级声明的吗? – thewisegod

回答

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"; 
} 
+0

是的,我想这样做,但是不知道为什么它不适用于我 –

+0

那么您的代码是如何设置的?如果那是绝对不可思议的。 – thewisegod

+0

请DatagridView数据源设置部分在按钮单击事件..然后它正在工作? –

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

+0

我通过设计师 –

+0

将datagridview添加到表单中,但是您的代码显示的是代码后面创建的数据网格,而不是通过设计器:'DataGridView datagrid = new DataGridView();' – jsanalytics

相关问题