【问题标题】:DataGridView ComboboxCell doesn't save its value to databaseDataGridView ComboboxCell 不会将其值保存到数据库
【发布时间】:2014-02-18 10:21:14
【问题描述】:

我正在 Visual Studio 2010 中开发一个简单的 Windows 窗体桌面应用程序。它连接到 2 表数据库,显示值。用户更改了表格中的一些值,它们应该被保存。
我有两张桌子:BanksOrdersOrdersBanks 有外键关系(它有一个 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 包含字段 iddisplay_name

作为ComboBoxCell 可以正常工作,但有两个问题:
1.表单启动时,该列(仅该列)中的所有值都是空的(而不是从数据库中取出)。
2. 当我更改某个日期(例如添加一行)时,除Bank 列中的值之外的所有值都成功保存到数据库中。但Bank 列中的值未保存。

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

【问题讨论】:

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

标签: c# winforms datagridview


【解决方案1】:

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

colFilterType.DataPropertyName = "id"

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

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多