列表类控件基本上都实现了IComboBox接口,所以我们可以通过此接口来做一些通用功能。
属性
名称 | 中文名称 | 说明 |
AllowEditValue | 允许编辑 | 是否允许编辑。 |
ItemsBindingDictionary | 字典项 | 用字典作为控件的下拉清单。并且只显示Key的值,但是返回的却是Value的值。此属性适合用代码赋值。 |
ComboList | 列表项 | 字符型,用于设置自定义列表项目,项目之间用符号“|”隔开。如果以“|”开头,则表示可以允许用户手动输入值。 |
在属性窗口中,我们可以直接在弹出窗口中编辑修改列表。每个项用回车分隔开。到属性中时会以“|”代替换行符。
下面我们演示一下如何用代码给这些加载赋值清单。
Vb.Net |
Dim db As Database=Proj.SysDataFactory("UserDB") '动态创建一个下拉清单控件 Dim cmb As New SmComboBox() '第一种方法,通过ItemsBindingDictionary来赋值 Dim strSQL As String="Select DicKeys,DicValues From SystemDictionary where ParentId=(Select DicID From SystemDictionary Where DicValues='政治面貌' and IsGroupName=1)" Dim dic As Dictionary(Of String,String)=db.GetDicOfColumnValue(strSQL) '以一个字典设置控件的清单 cmb.ItemsBindingDictionary=dic '第二种方法,通过ComboList来赋值 cmb.ComboList=db.GetComboListOfColumnValue("select DicValues From SystemDictionary where ParentId=(Select DicID From SystemDictionary Where DicValues='政治面貌' and IsGroupName=1)") '第三种方法,直接字符串赋值 cmb.ComboList="男|女" |
C# |
Database db = Proj.SysDataFactory["UserDB"]; // 动态创建一个下拉清单控件 SmComboBox cmb = new SmComboBox(); // 第一种方法,通过ItemsBindingDictionary来赋值 string strSQL = "Select DicKeys,DicValues From SystemDictionary where ParentId=(Select DicID From SystemDictionary Where DicValues='政治面貌' and IsGroupName=1)"; Dictionary<string, string> dic = db.GetDicOfColumnValue(strSQL); // 以一个字典设置控件的清单 cmb.ItemsBindingDictionary = dic; // 第二种方法,通过ComboList来赋值 cmb.ComboList = db.GetComboListOfColumnValue("select DicValues From SystemDictionary where ParentId=(Select DicID From SystemDictionary Where DicValues='政治面貌' and IsGroupName=1)"); // 第三种方法,直接字符串赋值 cmb.ComboList = "男|女"; |
虽然IComboBox接口里面没有Items属性,但是实现了IComboBox接口的这些类中,也基本上都有一个Items属性。使用方法也基本一致。
Vb.Net |
'动态创建一个下拉清单控件 Dim cmb As New SmComboBox() Dim arrCols() As String={"ColA","ColB","ColC","ColD"} '清空当前所有清单 cmb.Items.Clear() '添加方法一: cmb.Items.AddRange(arrCols) '移除某一个项 cmb.Items.Remove("ColA") '移除某个位置上的项 cmb.Items.RemoveAt(0) '在第二行插入"ColE" cmb.Items.Insert(1,"ColE") '在最后添加一条记录 cmb.Items.Add("ColF") cmb.Items.Clear() '我们还可以循环遍历添加 For Each Item As String In arrCols cmb.Items.Add(Item) Next |
C# |
// 动态创建一个下拉清单控件 SmComboBox cmb = new SmComboBox(); string[] arrCols = new[] { "ColA", "ColB", "ColC", "ColD" }; // 清空当前所有清单 cmb.Items.Clear(); // 添加方法一: cmb.Items.AddRange(arrCols); // 移除某一个项 cmb.Items.Remove("ColA"); // 移除某个位置上的项 cmb.Items.RemoveAt(0); // 在第二行插入"ColE" cmb.Items.Insert(1, "ColE"); // 在最后添加一条记录 cmb.Items.Add("ColF"); cmb.Items.Clear(); // 我们还可以循环遍历添加 foreach (string Item in arrCols) cmb.Items.Add(Item); |