C# 如何将更改后的datagrid值保存到datatable中?

C# 如何将更改后的datagrid值保存到datatable中?,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个数据集和两个数据表 Datatable1=组合框源这将显示选项列表 Datatable2=DataGrid这将在组合框中显示与选项相关的数据 “提交”按钮根据组合框的选定值填充数据网格 当我在组合框中选择一个项目并单击submit时,它会在datagrid中加载相关记录。如果我在datagrid中更改了一个值并单击submit按钮,那么我刚才更改的值会消失吗 如何使任何更改的datagrid值修改数据表,以便即使我查看不同的选项,也可以始终返回任何、保留任何更改的值 这是我的密码:

我有一个数据集和两个数据表

Datatable1=组合框源这将显示选项列表 Datatable2=DataGrid这将在组合框中显示与选项相关的数据 “提交”按钮根据组合框的选定值填充数据网格

当我在组合框中选择一个项目并单击submit时,它会在datagrid中加载相关记录。如果我在datagrid中更改了一个值并单击submit按钮,那么我刚才更改的值会消失吗

如何使任何更改的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();
    }

希望这有意义?

我认为您的DataGrid已经绑定到数据表。您需要做的是将更改发送回数据源,以便它们将反映在绑定到同一数据源的第二个数据表中。为此,请在DataGrid上为CellChanging事件编写一个事件处理程序,这样,如果您使用的是数据适配器上的call Update方法,则可以在其中调用该方法,即将更改发送到数据源。然后,在同一个事件处理程序中,通过刷新数据绑定更新组合框中的项目,以便组合框从第二个数据表中获取最新值


这样,每当单元格在数据网格中更改其值时,您都可以检查它是否是您想要的相关单元格,并根据数据网格中的更改更新组合框。

抱歉我的错误。.我是个笨蛋

datagrid是自动绑定的。我刚刚意识到我在调用我的初始数据集方法——在我的datagrid_load方法中调用我的数据库。因此,每次我填充datagrid时,它实际上是从数据库而不是从datatable刷新的


谢谢您的回复。

您可能需要添加一些标记,说明您正在使用哪个可视框架。Windows窗体、WPF、siverlight等。