绑定DataGridView有多个源

时间:2013-10-30 17:22:50

标签: c# winforms datagridview datagridviewcombobox

一段时间以来,我一直在争论这件事,这让我疯狂。情况就是这样:

我有一个有限的DataGridView我用视觉工作室设计师设计了它。所有信息都相应显示。

在我的DataGridView我有2 ComboBoxes这里的数据也正确显示。如果我点击ComboBoxe选项列表,我想要那样。

由于DataGridView与源有关,因此我无法使用ComboBox.Items.Add()方法。所以我在设计器中创建了另一个Datasource,在运行时我更改了该特定组合框的datasource现在列表显示了我想要的选项,是的!

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

        if (tasksDataSet.HasChanges()
        {
            try
            {
                tasksBindingSource.EndEdit();
                tasksDataSet.GetChanges();
                tasksTableAdapter.Update(tasksDataSet);
            }
            catch (Exception ex)
            {

            }
         }

这不适用于ComboBoxes,因为这是另一个数据源。

基本上我想要的是:

  • 使用DataGridView
  • 的数据源
  • 更改/添加项目到DataGridViewComboBox
  • 将更改后的内容保存到(完整)DataGridView到数据库

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您的问题是保存给网格视图的当前数据。 比我建议尝试使用会话。将数据绑定到DataSource时将其分配给 session [“SomeID”]。如果您更改绑定,则再次为其分配相同的会话。

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

例如:

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

这是我得到的基本想法。我跳这会帮助你。 请给它+1,如果它可以帮助你