繁体   English   中英

如何使用 DataSource 和使用 DataGridViewComboBoxColumn 的列创建 DataGridView?

[英]How to create a DataGridView with a DataSource and columns that use DataGridViewComboBoxColumn?

我有一个 class 派生自我用作数据源的数据集。 我的 DataGridView 有 8 列,其中 3 列是使用下拉组合框编辑的多个值选择。

  1. 如果我让数据源为 DataGridView 生成列,那么所有列类型都是 DataGridViewTextBoxColumn。 但是 DataGridView 填充了我的原始行值。

  2. 如果我将 AutoGenerateColumns 设置为 false 并将我自己的列类型添加到 DataGridView,我可以为需要它的 3 列添加 DataGridViewComboBoxColumn。 但是,DataSource 虽然包含行数据,但不会填充我的 DataGridView 的行。

显然我希望这两件事都发生。 需要从 DataSource 填充行,并且需要从 DataGridView 将列正确编辑为 DataGridViewComboBoxColumns。 为什么我不能两者兼得? 我究竟做错了什么。

请注意,这不是关于使用数据源填充 ComboBox 中的项目的问题。

code fragment
            alarmDataSet = new AlarmDataSet(sAlarms);
            gridView.AutoGenerateColumns = false;
            gridView.DataSource = alarmDataSet;
            gridView.DataMember = sAlarms;

another code fragment
                    cm = new DataGridViewComboBoxColumn();
                    cm.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
                    cm.HeaderText = ci.Name;
                    cm.Name = ci.DataName;
                    cm.MaxDropDownItems = 3;
                    cm.Items.Add("Once");
                    cm.Items.Add("Repeat");
                    cm.Items.Add("Off");
                    gridView.Columns.Add(cm);

谢谢

如果你设置

DataGridView.AutoGenerateColumns = false 

然后,您需要告诉 DataGeridView DataGridView 的哪一列绑定到 DataSource 的哪一列(如果是列表,则为属性名称)

DataGridView.Column[0].DataPropertyName = "Column Name In Your DataSource That is bound to DataGridView Column 0"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM