Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用多个源绑定DataGridView_C#_Winforms_Datagridview_Datagridviewcombobox - Fatal编程技术网

C# 使用多个源绑定DataGridView

C# 使用多个源绑定DataGridView,c#,winforms,datagridview,datagridviewcombobox,C#,Winforms,Datagridview,Datagridviewcombobox,我已经为此绞尽脑汁一段时间了,这让我发疯。情况就是这样: 我有一个有界的DataGridView我是用visualstudio设计器设计的。所有信息都相应地显示出来 在我的DataGridView中,我有两个组合框,其中数据也正确显示。如果我点击组合框,就会显示一个选项列表,我想要这个 因为DataGridView绑定到一个源,所以我不能使用ComboBox.Items.Add()方法。因此,我在设计器中创建了另一个数据源,并在运行时更改该特定组合框的数据源现在列表显示了我想要的选项,yeey

我已经为此绞尽脑汁一段时间了,这让我发疯。情况就是这样:

我有一个有界的
DataGridView
我是用visualstudio设计器设计的。所有信息都相应地显示出来

在我的
DataGridView
中,我有两个
组合框
,其中数据也正确显示。如果我点击
组合框
,就会显示一个选项列表,我想要这个

因为
DataGridView
绑定到一个源,所以我不能使用
ComboBox.Items.Add()
方法。因此,我在设计器中创建了另一个数据源,并在运行时更改该特定组合框的
数据源现在列表显示了我想要的选项,yeey

现在,我想将这个新添加或更改的行保存到数据库中。。为此,我使用以下方法(我从
DataGridView
调用
RowLeave
事件上的方法):

这不适用于组合框,因为这是另一个数据源

所以基本上我想要的是:

  • 将数据源用于
    DataGridView
  • 更改/添加项目到
    DataGridViewComboBox
  • 将对(完整)
    DataGridView所做的更改保存到数据库中

我怎样才能做到这一点

如果您的问题是保存提供给Grid view的当前数据。 我建议尝试使用会话。将数据绑定到数据源时,将其分配给 会话[“SomeID”]。如果您正在更改绑定,请再次为其分配相同的会话

下一步将会话转换为您想要保存的内容

例:

//数据源。
list-DataBoundSource=新列表();
DataGrid.DataSource=DataBoundSource;
DataGrid.DatBind();
//分配给要绑定此会话的会话
//每次
会话[“SameID”]=lsDataBoundSOurce;
//你的密码。
...
...
...
//将该会话转换为要保存的数据源。
list saveData=(list)会话[“SameID”];
这是我的基本想法。我希望这对你有帮助。
如果您的问题是要保存提供给Grid view的当前数据,请将其加1。 我建议尝试使用会话。将数据绑定到数据源时,将其分配给 会话[“SomeID”]。如果您正在更改绑定,请再次为其分配相同的会话

下一步将会话转换为您想要保存的内容

例:

//数据源。
list-DataBoundSource=新列表();
DataGrid.DataSource=DataBoundSource;
DataGrid.DatBind();
//分配给要绑定此会话的会话
//每次
会话[“SameID”]=lsDataBoundSOurce;
//你的密码。
...
...
...
//将该会话转换为要保存的数据源。
list saveData=(list)会话[“SameID”];
这是我的基本想法。我希望这对你有帮助。
如果它对您有帮助,请给它+1

这将更改整个datagrid的数据源,保存的问题是保存comboboxi有另一个数据源,我没有告诉您更改数据源。将数据源分配给会话,然后通过转换来保存该会话。如果可能,请张贴一些代码,这样我可以帮助你。谢谢回复。这将更改整个datagrid的数据源,保存的问题是我有另一个用于ComboBox的数据源。我不会告诉您更改数据源。将数据源分配给会话,然后通过转换来保存该会话。如果可能,请张贴一些代码,这样我可以帮助你。谢谢你的回复。
        if (tasksDataSet.HasChanges()
        {
            try
            {
                tasksBindingSource.EndEdit();
                tasksDataSet.GetChanges();
                tasksTableAdapter.Update(tasksDataSet);
            }
            catch (Exception ex)
            {

            }
         }
        //Datasource.
        list<User> DataBoundSource = new list<User>();

        DataGrid.DataSource = DataBoundSource;
        DataGrid.DatBind();
        //Assign to Session where you are binding this
        //every time
        Session["SameID"] = lsDataBoundSOurce;

        //your code.
        ...
        ...
        ...

        //covert that session to Datasource you want to save.

        list<User> saveData = (list<User>) Session["SameID"];