65.9K
CodeProject 正在变化。 阅读更多。
Home

DataGrid 中的 ComboBox

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (53投票s)

2002年12月26日

1分钟阅读

viewsIcon

448024

downloadIcon

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) 是用于翻译的 DataTableNameNumber 是从表中使用的列名,theGrid 是该列将所属的 DataGrid。 确保提供 NullText;否则,如果您尝试将行添加到 DataGrid,它将抛出异常。

DataGridComboBoxColumn c1=new DataGridComboBoxColumn("Type", 
         AccessDataTypes, "Name", "Number", theGrid);
c1.NullText="3";
ts.GridColumnStyles.Add(c1);

最后,将新创建的 TableStyle 添加到 DataGridTableStyles 数组中。

theGrid.TableStyles.Add(ts);

享受改进后的 DataGrid,并确保发送您自己的 DataGrid 列!

© . All rights reserved.