DataGridView ComboboxCell不会将其值保存到数据库

时间:2014-02-18 10:21:15

标签: c# winforms datagridview

我正在Visual Studio 2010中开发一个简单的Windows窗体桌面应用程序。它连接到2表数据库,显示值。用户更改表中的某些值,并应保存它们 我有两个表:BanksOrdersOrdersBanks具有外键关系(它有一个bank_id字段) 我创建了一个Form,我创建了一个Dataset,并通过从VS2010的Server Explorer面板中拖放两个表来向其添加数据。
然后我将DataGridView添加到我的Form,方法是将表格Orders拖放到其中。{
1}} 这是一个有效的项目,我可以更改数据,保存数据,然后保存在数据库中。

唯一担心的是将银行ID而不是他们的名字放入表中是不方便的。我想在我的桌子上放一个ComboBoxCell

我使用可视化编辑器从bank_id上的DataGridView删除了一列Form。相反,我将以下代码添加到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工作正常,但它有两个问题:
1.表单启动时,该列中的所有值(仅在该列中)为空(而不是从数据库中获取)。
2.当我更改某个日期(例如添加一行)时,除Bank列中的值之外的所有值都会成功保存到数据库中。但是Bank列中的值未保存。

我认为Bank列与我的数据(Dataset或类似的东西)的绑定有问题。
有人可以帮我解决问题吗?我该怎么做才能将Bank列中的所有数据保存到数据库中?

1 个答案:

答案 0 :(得分:1)

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

colFilterType.DataPropertyName = "id"

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

相关问题