一般支持數據綁定的web控件例如DorpDownList控件CheckBoxList控件等都包含五個屬性DataSourceDataMemberDataTextFieldDataValueField和DataTextFormatStringDataSource用於獲取數據源亦即獲取包含數據的集合其他四個屬性用於獲取數據源中的一個字段值然而通常情況下你想將這些數據源中的多個字段值綁定在一起賦值給其中的一個屬性這是不能直接實現的下面我們將介紹兩種方法用於實現這一功能
以上限制在於不能將多個字段值綁定在一起賦值給這四個屬性中的其中一個但是SQL語句卻完全沒有這種限制所以我們的第一個方法是使用SQL語句將源表中的兩個或多個字段值綁定在一起使用AS子句傳遞給另一個字段這樣就實現了一個字段包含多個字段值由於現在一個字段就包含了多個字段的值我們將其賦值給web控件的那四個屬性時就不用有更多的考慮了我們可以參考下面的語句看看這種方法的妙處
strCmd=SELECT employeeidlastName ++firstName AS EmployeeName FROM Employees
這種方法十分簡潔也是最直接的一種方法不過存在著效率不足的問題而且有可能會產生重復數據下面我們介紹另一種方法我們可以將源表填充到一個數據集DataSet中然後將數據集的數據放置到一個數據表DataTable中然後給該表創建一個新列該列由源表中的兩個或多個字段構成這樣我們也實現了多個字段值的綁定下面的語句可以說明這種方法的實現
dtColumnsAdd(EmployeeNametypeod(String)lastName++firstName)
後一種方法的缺點在於創建新列的開銷不過這種方法條理比較清楚而且不會產生重復數據的可能建議使用這種方法
為了說明這兩種方法下面的代碼將兩種方法放在一起實現了
// 在此處放置用戶代碼以初始化頁面
string strConnstrCmd
strConn=DATABASE=NorthWindSERVER=localhostUID=saPWD=
//如果既需要將firstName和LastName綁定又需要單獨使用他們下面的語句就會產生重復數據
strCmd=SELECT employeeidfirstNamelastNamelastName ++firstName AS EmployeeName FROM Employees
SqlDataAdapter dsda=new SqlDataAdapter(strCmdstrConn)
DataSet ds=new DataSet()
dsdaFill(dsEmployeeList)
DataTable dt=dsTables[EmployeeList]
//第一種方法
//DDL是一個DropDownList控件
DDLDataSource=dtDefaultView
DDLDataTextField=EmployeeName
DDLDataValueField=employeeid
DDLDataBind()
/*第二種方法
dtColumnsAdd(EmployeeNametypeod(String)lastName++firstName)
DDLDataTextField=EmployeeName
DDLDataBind()
* /
From:http://tw.wingwit.com/Article/program/net/201311/13497.html