《Visual C# 2005文件 IO与数据存取秘诀》节选 |
条款33 |
|
条款55 |
|
条款56 |
|
条款63 |
|
条款73 |
|
条款100 |
|
条款134 |
|
条款152 |
|
条款161 |
|
条款163 |
|
之前,我们在“如何使用简单绑定来显示多个数据源属性”一节中就曾经提到过,简单绑定并不直接支持数据源属性串连。同样,ComboBox控件也不直接支持数据源属性串连。也就是说,在默认状态下,ComboBox控件只能绑定至数据源的某单一属性,而不能绑定至属性串联后的结果。虽然不能直接做到,但是却可以间接做到,解决的方法就是利用ComboBox控件的Format属性来串联多个数据源属性。
程序范例1
|
图 3-44 |
图3-44所示的是程序范例CH3_DemoForm028.cs的执行画面,其中ComboBox控件最特殊的地方就是,同时显示出源数据表的多个字段内容并加以格式化。基本上,在绑定操作方面,我们只分别将ComboBox控件的ValueMember与DataSource属性设置成“员工号码”字段与“章立民工作室”数据表。
private void CH3_DemoForm028_Load(object sender, EventArgs e) { // 调用 LoadDataToDataSet() 函数来连接至数据源并返回所需的 DataSet 对象。 DataSet myDataSet = LoadDataToDataSet(); if (myDataSet != null) { ComboBox1.ValueMember = "员工号码"; // 设置下拉列表框 ComboBox1 的数据源。 ComboBox1.DataSource = myDataSet.Tables["章立民工作室"]; } }
|
ComboBox的每一个选项之所以会含有数个字段的格式化后的合并结果,其关键就在于我们为ComboBox控件的Format事件处理函数编写了下列程序代码。
private void ComboBox1_Format(object sender, ListControlConvertEventArgs e) { DataRowView myDataRowView = (DataRowView)(e.ListItem); if (myDataRowView != null) { e.Value = String.Format(" - - - ", myDataRowView["姓名"], myDataRowView["性别"], myDataRowView["出生日期"], myDataRowView["目前薪资"]); } }
|
程序范例2
|
图 3-45 |
图 3-45所示的是程序范例CH3_DemoForm029.cs的执行画面,其中ComboBox控件最特殊的地方,就是同时显示出多个数据源属性。基本上,在绑定操作方面,我们只分别设置了ComboBox控件的ValueMember与DataSource属性。
private void CH3_DemoForm029_Load(object sender, EventArgs e) { this.culturesCB.ValueMember = "LCID"; this.culturesCB.DataSource = CultureInfo.GetCultures(CultureTypes.FrameworkCultures); }
|
ComboBox的每一个选项之所以会含有其他两个属性的值,其关键就在于我们为ComboBox控件的Format事件处理函数编写了下列程序代码。
private void culturesCB_Format(object sender, ListControlConvertEventArgs e) { CultureInfo ci = (CultureInfo)(e.ListItem); if (ci != null) { e.Value = String.Format(" : ", ci.IetfLanguageTag, ci.DisplayName); } }
|