程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> Visual C# 2005中讓ComboBox控件顯示出多個數據源屬性

Visual C# 2005中讓ComboBox控件顯示出多個數據源屬性

編輯:關於C#

之前,我們在“如何使用簡單綁定來顯示多個數據源屬性”一節中就曾經提到過,簡單綁定並不直接支持數據源屬性串連。同樣,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);
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved