我有datagridview绑定到数据源(基于SQL视图的数据集)。它主要由带有几个复选框的文本框组成。在包含DGV的表单上,有用于编辑每个列的控件。在Form_Load上,视图将填充SQL视图的内容。这是使用表适配器的Fill命令完成的,并且工作正常。
现在我通过修改数据源以包含新的位值来向DGV添加新列。我使用任务编辑器为datagrid视图添加新列。我在表单中添加了一个相应的复选框,以设置此列的值,该列绑定到DGV使用的绑定源。如果我选中此新复选框并单击“保存”,则使用新值更新数据库,但此更改不会反映在DGV或绑定复选框控件中。顺序如下:
//execute the update statement:
command.ExecuteNonQuery();
//refill the table:
vwTILEAdminTableAdapter.Fill(tILEDataSet.vwTILEAdmin);
//reset the binding source - maybe the problem is here?
vwTILEAdminBindingSource.DataSource = typeof(TILEDataSet.vwTILEAdminDataTable);
vwTILEAdminBindingSource.DataSource = this.tILEDataSet.vwTILEAdmin;
dataGridView1.DataSource = null;
dataGridView1.DataSource = this.vwTILEAdminBindingSource;
vwTILEAdminBindingSource.ResetBindings(false); // false for data change, true for schema change
vwTILEAdminBindingSource.EndEdit();
过去,当我以任何方式修改DGV时,这似乎总是有效。似乎绑定仅在一个方向上工作(写入),因为我可以在每次保存后看到SQL Management Studio中对数据库的更改,但新复选框始终显示零值。我甚至尝试删除DGV并将其与所有事件一起重新添加。
我今天早上刚刚找到了EndEdit命令,但没有任何区别。我也尝试将ResetBindings的参数设置为true,这也没有区别。
我认为这将是一个10分钟的变化,我没有想法。提前感谢任何见解。
答案 0 :(得分:0)
确保新列位于数据集的表中,同时确保该列位于填充查询的commandText中。
此外,该行
vwTILEAdminTableAdapter.Fill(tILEDataSet.vwTILEAdmin);
应足以刷新数据。