DataGrid 的条件组合框列
这是一个类,它允许您根据某些条件在DataGrid上显示下拉框。
引言
有时您需要提供一个用户界面,该界面能够以自由形式(例如名称)和受限形式(下拉框,例如性别)接受输入。此控件以一种简单的方式解决了这个问题。
背景
我遇到过这样的需求。我在互联网上搜索,所有文章或控件都在讨论将整列变成下拉框。所以我决定修改一个这样的代码来满足我的需求。
Using the Code
首先,您需要在DataGrid
的表格样式中添加类型为DatagridConditionalComboboxColumn
的GridColumnStyle
。DatagridConditionalComboboxColumn
的构造函数接受一个ComboValueChanged
委托作为输入。每当用户更改下拉框的SelectedIndex
时,都会调用此委托。
然后,您需要侦听由DatagridConditionalComboboxColumn
在用户进入单元格进行编辑时引发的StatedEditing
事件。在这里,您可以检查条件,并根据条件将ShowCombobox
属性设置为true
或false
。如果将其设置为true
,则可以向下拉框添加项目。
完成所有这些操作后...就完成了。请查看附带的示例源代码。
//
// A sample of adding DatagridConditionalComboboxColumn to the datagrid
// table style
DataGridTableStyle tableStyle = new DataGridTableStyle();
DataGridTextBoxColumn nameColumn = new DataGridTextBoxColumn();
nameColumn.MappingName = "Name";
nameColumn.HeaderText = "Name";
nameColumn.ReadOnly = true;
tableStyle.GridColumnStyles.Add(nameColumn);
ComboValueChanged comboValueChangedDelegate =
new ComboValueChanged(comboValueChanged);
DatagridConditionalComboboxColumn valueColumn =
new DatagridConditionalComboboxColumn(comboValueChangedDelegate);
valueColumn.StartedEditing +=new EventHandler(valueColumn_StartedEditing);
valueColumn.MappingName = "Value";
valueColumn.HeaderText = "Value";
tableStyle.GridColumnStyles.Add(valueColumn);
this.dataGrid1.DataSource = populateDatatable();
this.dataGrid1.TableStyles.Clear();
this.dataGrid1.TableStyles.Add(tableStyle);
关注点
无。