2014-02-18 57 views
0

我正在Visual Studio 2010中开发一个简单的Windows Forms桌面应用程序。它连接到两表数据库,显示值。用户更改表格中的一些值,并且应该保存它们。我有两个表格:BanksOrdersOrdersBanks(它有一个bank_id字段)有外键关系。
我创建了一个Form,我创建了一个Dataset,并通过拖放VS2010的Server Explorer面板中的两个表来添加数据。
然后,我通过将Orders拖放到Form上,将DataGridView添加到我的Form中。
这是一个工作项目,我可以改变数据,保存它,并将其保存在数据库中。DataGridView ComboboxCell不会将其值保存到数据库中

唯一令人担心的是,将银行ID代替他们的名字放在表格中是不方便的。我希望在我的表中有一个ComboBoxCell

我用我的Form上的DataGridView删除了一列bank_id的可视化编辑器。相反,我下面的代码添加到Form构造:

public Form6() 
     { 
      InitializeComponent(); 

      DataGridViewComboBoxColumn colFilterType = new DataGridViewComboBoxColumn(); 
      colFilterType.HeaderText = "Bank"; 
      colFilterType.DataSource = dataSet1.banks; 
      colFilterType.ValueMember = "id"; 
      colFilterType.DisplayMember = "display_name"; 
      colFilterType.ValueType = typeof(int); 
      ordersDataGridView.Columns.Add(colFilterType); 

     } 

点评:表Banks有场iddisplay_name

它工作正常,为ComboBoxCell,但它有2个问题:
1.当启动形式,在该列(仅在列),所有值都是空的(而不是从数据库中把他们)。
2.当我更改某个日期(例如添加一行)时,除Bank列中的值之外的所有值均成功保存到数据库。但Bank列中的值不会保存。

我认为Bank列与我的数据(Dataset或类似的东西)的绑定有些问题。
有人能帮我解决这个问题吗?我应该如何将Bank列中的所有数据保存到数据库?

+0

您可以隐藏bank_id列而不是删除它。您可以将列的可见属性设置为false。 – suds

回答

1

要填充初始值,请将属性DataPropertyName设置为DB列名称。

colFilterType.DataPropertyName = "id"

这也应该解决您的更新问题。

+0

谢谢!它解决了我的问题。 – user1460819

相关问题