【发布时间】:2014-02-18 10:21:14
【问题描述】:
我正在 Visual Studio 2010 中开发一个简单的 Windows 窗体桌面应用程序。它连接到 2 表数据库,显示值。用户更改了表格中的一些值,它们应该被保存。
我有两张桌子:Banks 和 Orders。 Orders 与 Banks 有外键关系(它有一个 bank_id 字段)。
我创建了一个Form,我创建了一个Dataset,并通过从VS2010 的Server Explorer 面板中拖放两个表来添加数据。
然后我通过将表 Orders 拖放到我的 Form 中添加了一个 DataGridView。
那是一个工作项目,我可以更改数据,保存它,然后它会保存在数据库中。
唯一担心的是,将银行 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 包含字段 id 和 display_name。
作为ComboBoxCell 可以正常工作,但有两个问题:
1.表单启动时,该列(仅该列)中的所有值都是空的(而不是从数据库中取出)。
2. 当我更改某个日期(例如添加一行)时,除Bank 列中的值之外的所有值都成功保存到数据库中。但Bank 列中的值未保存。
我认为Bank 列与我的数据(Dataset 或类似的东西)的绑定有问题。
有人可以帮我解决问题吗?我应该怎么做才能将Bank列中的所有数据也保存到数据库中?
【问题讨论】:
-
您可以隐藏bank_id列而不是删除它。您可以将列的可见属性设置为 false。
标签: c# winforms datagridview