我有一个数据集和2个数据表。
Datatable1 = Combobox源(这将显示选项列表) Datatable2 = DataGrid(这将显示与组合框中的选项相关的数据) 提交按钮(根据组合框选择的值填充数据网格)
当我在组合框中选择一个项目并单击“提交”时,它会加载datagrid中的相关记录。如果我然后更改数据网格中的值并单击提交按钮,我刚刚更改了值,消失了吗?
我怎样才能使任何更改的数据网格值修改数据,这样即使我查看不同的选项,我总是可以返回任何一个,保留任何更改的值?
这是我的代码:
//Load the data grid according to the ComboCAtegory selection
public void Grid_Load()
{
DataSet();
var Result = from c in DataSet_Main.Tables[2].AsEnumerable()
where c.Field<string>("Test_Code").Equals(comboBox_CategorySelect.SelectedValue)
select c;
dataGridView_Main.DataSource = Result.AsDataView();
dataGridView_Main.Columns["Test_Code"].Visible = false;
dataGridView_Main.Columns["ID"].Visible = false;
dataGridView_Main.Columns["Description"].Visible = false;
dataGridView_Main.Columns["Expected_Result"].Visible = false;
}
private void buttonSubmit_Click(object sender, EventArgs e)
{
Grid_Load();
}
public void Fail()
{
DataTable dt = DataSet_Main.Tables[2];
//dataGridView_Main.SelectedRows[0].Cells["Check"].Value = "Fail";
dt.Rows[dataGridView_Main.SelectedRows[0].Index]["Check"] = "Fail";
}
private void buttonFail_Click(object sender, EventArgs e)
{
Fail();
}
希望这有道理吗?
答案 0 :(得分:0)
我认为您的DataGrid已绑定到数据表。您需要做的是将更改发送回数据源,以便它们反映在绑定到同一数据源的第二个数据表中。为此,在DataGrid上为CellChanging事件编写一个事件处理程序,并且您可以在数据适配器上调用Update()方法(如果您使用的话,那就是)将更改发送到数据源。然后,在同一事件处理程序中,通过刷新数据绑定来更新组合框中的项目,以便组合框从第二个数据表中获取最新值。
这样,每当单元格在DataGrid中更改其值时,您可以检查它是否是您想要的相关单元格,并根据数据网格中的更改更新组合框。
答案 1 :(得分:0)
道歉我的坏......我是个头脑。
Tha datagrid自动绑定。我刚刚意识到我在我的datagrid_load方法中调用了我的初始数据集()方法 - 它正在调用我的数据库。因此,每当我填充数据网格时,它实际上是从数据库中刷新而不是数据表。
谢谢你的回忆......