DataGrid 中的 ComboBox





4.00/5 (53投票s)
2002年12月26日
1分钟阅读

448024

2210
从 DataGridColumnStyle 派生而来。
引言
这是一个从 DataGridColumnStyle
派生的类,用于在 DataGrid
列中拥有一个 ComboBox
。它基于 Sudhakar Jalli 的一篇文章,但我发现代码无法正常工作。我修复了代码并对其进行了一些清理。
DataGridComboBoxColumn
类使得可以使用 ComboBox
代替默认的文本或复选框成为可能。花了我相当长的时间才弄清楚(即使在 Sudhakar Jalli 的文章的帮助下)。使用它很简单。
使用代码
首先创建一个新的 DataGridTableStyle
,并确保映射设置为 DataSource
中表的名称,该表将包含列。
DataGridTableStyle ts=new DataGridTableStyle();
ts.MappingName="Columns";
然后,创建包含查找值的 DataTable
。当然,这可以从数据库中获取(顺便说一句,应该这样做)。
DataTable AccessDataTypes = new DataTable();
AccessDataTypes.Columns.Add(new DataColumn("Number", typeof(int)));
AccessDataTypes.Columns.Add(new DataColumn("Name", typeof(string)));
AccessDataTypes.Rows.Add(new object[] {3, "Numeric"});
AccessDataTypes.Rows.Add(new object[] {130, "Text"});
创建 DataGridComboBoxColumn
并将其添加到 GridColumnStyles
中。第一个参数 (Type
) 用于列标题和映射。(创建后可以更改)。第二个参数 (AccessDataTypes
) 是用于翻译的 DataTable
。 Name
和 Number
是从表中使用的列名,theGrid
是该列将所属的 DataGrid
。 确保提供 NullText
;否则,如果您尝试将行添加到 DataGrid
,它将抛出异常。
DataGridComboBoxColumn c1=new DataGridComboBoxColumn("Type",
AccessDataTypes, "Name", "Number", theGrid);
c1.NullText="3";
ts.GridColumnStyles.Add(c1);
最后,将新创建的 TableStyle
添加到 DataGrid
的 TableStyles
数组中。
theGrid.TableStyles.Add(ts);
享受改进后的 DataGrid
,并确保发送您自己的 DataGrid
列!