科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual C# 2005如何让ComboBox控件显示出多个数据源属性

Visual C# 2005如何让ComboBox控件显示出多个数据源属性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍Visual C# 2005中利用ComboBox控件的Format属性来串联多个数据源属性来间接绑定至属性串联后的结果。

作者:章立民 来源:51CTO.com 2007年8月26日

关键字: C#

  • 评论
  • 分享微博
  • 分享邮件

Visual C# 2005文件 IO与数据存取秘诀》节选

条款33
Visual C# 2005如何实现比较两个文件的内容是否完全相同
条款55
Visual C# 2005如何让ComboBox控件显示出多个数据源属性
条款56
C#中为什么我的ComboBox控件在数据绑定时加载速度很慢
条款63
Visual C# 2005如何连接至Access数据库
条款73
Visual C# 2005中如何为数据表建立自动编号字段
条款100
Visual C# 2005中如何使用数据命令执行Transact-SQL语句
条款134
C#中将DataSet的内容写成XML时如何格式化字段数据
条款152
C#中当用户尝试删除数据行时如何显示确认对话框
条款161
Visual C# 2005中如何以程控方式启动默认的浏览器
条款163
Visual C# 2005中如何产生与比较哈希值

之前,我们在“如何使用简单绑定来显示多个数据源属性”一节中就曾经提到过,简单绑定并不直接支持数据源属性串连。同样,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("{0} - {1} - {2:yyyy/MM/dd} - {3:NT$#,##000}",

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("{0} : {1}", ci.IetfLanguageTag, ci.DisplayName);

}

}

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章