我愛北京天安門
天安門上太陽升
偉大領袖毛主席
指引我們向前進
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="4"><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一般支援資料繫結的</span><span lang="EN">web</span><span style="FONT-FAMILY:
宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制項,例如</span><span lang="EN">DorpDownList</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制項、</span><span
lang="EN">CheckBoxList</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制項等,都包含五個屬性:</span><span lang="EN">DataSource</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New
Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN">DataMember</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,</span><span lang="EN">DataTextField</span><span style="FONT-FAMILY:
宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN">DataValueField</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span
lang="EN">DataTextFormatString</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN">DataSource</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New
Roman'; mso-hansi-font-family: 'Times New Roman'">用於擷取資料來源,亦即擷取包含資料的集合;其他四個屬性用於擷取資料來源中的一個欄位值。然而,通常情況下,你想將這些資料來源中的多個欄位值綁定在一起賦值給其中的一個屬性,這是不能直接實現的。下面我們將介紹兩種方法用於實現這一功能。</span></font></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="4"><span
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以上限制在於不能將多個欄位值綁定在一起,賦值給這四個屬性中的其中一個;但是</span><span lang="EN">SQL</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family:
'Times New Roman'">語句卻完全沒有這種限制。所以,我們的第一個方法是使用</span><span lang="EN">SQL</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">語句將源表中的兩個或多個欄位值綁定在一起,使用</span><span lang="EN">AS</span><span style="FONT-FAMILY:
宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">子句傳遞給另一個欄位,這樣就實現了一個欄位包含多個欄位值。由於現在一個欄位就包含了多個欄位的值,我們將其賦值給</span><span lang="EN">web</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family:
'Times New Roman'">控制項的那四個屬性時就不用有更多的考慮了。我們可以參考下面的語句看看這種方法的妙處:</span></font></p> <div align="center"> <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #f3f3f3; BORDER-LEFT: medium none; BORDER-BOTTOM: medium
none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing="0" cellpadding="0" border="1">
<tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt
solid; WIDTH: 392.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" valign="top" width="523"> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-SIZE:
9pt; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><font size="4">strCmd="SELECT employeeid,lastName +','+firstName AS 'EmployeeName' FROM Employees";</font></span></p></td></tr></tbody></table></div> <p class="MsoNormal"
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><font size="4"><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">這種方法十分簡潔,也是最直接的一種方法,不過存在著效率不足的問題,而且有可能會產生重複資料。下面我們介紹另一種方法,我們可以將源表填充到一個資料集</span><span
lang="EN">DataSet</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中,然後將資料集的資料放置到一個資料表</span><span lang="EN">DataTable</span><span style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times
New Roman'; mso-hansi-font-family: 'Times New Roman'">中,然後給該表建立一個新列,該列由源表中的兩個或多個欄位構成,這樣我們也實現了多個欄位值的綁定。下面的語句可以說明這種方法的實現:</span></font></p> <div align="center"> <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND:
#f3f3f3; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt
solid windowtext" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT:
5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 389.05pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" valign="top" width="519"> <p class="MsoNormal" style="MARGIN:
0cm 0cm 0pt"><span lang="EN"><font size="4">dt.Columns.Add(“EmployeeName”,typeod(String),”lastName+’,’+firstName”);</font></span></p></td></tr></tbody></table></div> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY:
宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="4">後一種方法的缺點在於建立新列的開銷。不過這種方法條理比較清楚,而且不會產生重複資料的可能,建議使用這種方法。</font></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY:
宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="4">為了說明這兩種方法,下面的代碼將兩種方法放在一起實現了:</font></span></p> <div align="center"> <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none;
BACKGROUND: #f3f3f3; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev:
.5pt solid windowtext" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"> <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT:
5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 392.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" valign="top" width="523"> <p class="MsoNormal" style="MARGIN:
0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><font size="4"><span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">// </span><span style="FONT-SIZE:
9pt; COLOR: green; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">在此處放置使用者代碼以初始化頁面<span lang="EN"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></span></span></font></p> <p class="MsoNormal"
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><font size="4"><span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">string</span><span
lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"> strConn,strCmd;<span style="COLOR: green"><o:p></o:p></span></span></font></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN:
left; mso-layout-grid-align: none" align="left"><span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><font size="4">strConn="DATABASE=NorthWind;SERVER=localhost;UID=sa;PWD=99133009;";<o:p></o:p></font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><font size="4"><span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">//</span><span
style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">如果既需要將<span lang="EN">firstName</span>和<span lang="EN">LastName</span>綁定,又需要單獨使用他們,下面的語句就會產生重複資料。<span lang="EN"><o:p></o:p></span></span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><font size="4">strCmd="SELECT
employeeid,firstName,lastName,lastName +','+firstName AS 'EmployeeName' FROM Employees";<o:p></o:p></font></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left"><span lang="EN" style="FONT-SIZE:
9pt; FONT-FAMILY: 新宋體; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><font size="4">SqlDataAdapter dsda=<span style="COLOR: blue">new</span> SqlDataAdapter(strCmd,strConn);<o:p>
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();
* /