以上限制在于不能將多個字段值綁定在一起,賦值給這四個屬性中的其中一個;但是SQL語句卻完全沒有這種限制。所以,我們的第一個方法是使用SQL語句將源表中的兩個或多個字段值綁定在一起,使用AS子句傳遞給另一個字段,這樣就實現了一個字段包含多個字段值。由于現在一個字段就包含了多個字段的值,我們將其賦值給web控件的那四個屬性時就不用有更多的考慮了。我們可以參考下面的語句看看這種方法的妙處:
strCmd="SELECT employeeid,lastName +','+firstName AS 'EmployeeName' FROM Employees";
這種方法十分簡潔,也是最直接的一種方法,不過存在著效率不足的問題,而且有可能會產生重復數據。下面我們介紹另一種方法,我們可以將源表填充到一個數據集DataSet中,然后將數據集的數據放置到一個數據表DataTable中,然后給該表創建一個新列,該列由源表中的兩個或多個字段構成,這樣我們也實現了多個字段值的綁定。下面的語句可以說明這種方法的實現:
dt.Columns.Add(“EmployeeName”,typeod(String),”lastName+’,’+firstName”);
后一種方法的缺點在于創建新列的開銷。不過這種方法條理比較清楚,而且不會產生重復數據的可能,建議使用這種方法。
為了說明這兩種方法,下面的代碼將兩種方法放在一起實現了:
// 在此處放置用戶代碼以初始化頁面
string strConn,strCmd;
strConn="DATABASE=NorthWind;SERVER=localhost;UID=sa;PWD=99133009;";
//如果既需要將firstName和LastName綁定,又需要單獨使用他們,下面的語句就會產生重復數據。
strCmd="SELECT employeeid,firstName,lastName,lastName +','+firstName AS 'EmployeeName' FROM Employees";
SqlDataAdapter dsda=new SqlDataAdapter(strCmd,strConn);
DataSet ds=new DataSet();
dsda.Fill(ds,"EmployeeList");
DataTable dt=ds.Tables["EmployeeList"];
//第一種方法
//DDL1是一個DropDownList控件
DDL1.DataSource=dt.DefaultView;
DDL1.DataTextField="EmployeeName";
DDL1.DataValueField="employeeid";
DDL1.DataBind();
/*第二種方法
dt.Columns.Add("EmployeeName",typeod(String),"lastName+','+firstName");
DDL1.DataTextField="EmployeeName";
DDL1.DataBind();
* /