我正在Visual Studio 2010中开发一个简单的Windows窗体桌面应用程序。它连接到2表数据库,显示值。用户更改表中的某些值,并应保存它们
我有两个表:Banks
和Orders
。 Orders
与Banks
具有外键关系(它有一个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
包含字段id
和display_name
。
它作为ComboBoxCell
工作正常,但它有两个问题:
1.表单启动时,该列中的所有值(仅在该列中)为空(而不是从数据库中获取)。
2.当我更改某个日期(例如添加一行)时,除Bank
列中的值之外的所有值都会成功保存到数据库中。但是Bank
列中的值未保存。
我认为Bank
列与我的数据(Dataset
或类似的东西)的绑定有问题。
有人可以帮我解决问题吗?我该怎么做才能将Bank
列中的所有数据保存到数据库中?
答案 0 :(得分:1)
要填充初始值,请将属性DataPropertyName
设置为DB列名称。
colFilterType.DataPropertyName = "id"
这也应解决您的更新问题。