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 列!
