HOW TO:判斷 List Web 伺服器控制項中的選取
更新:2007 年 11 月
本主題中的資訊適用於以下 Web 伺服器控制項:ListBox、DropDownList、CheckBoxList 和 RadioButtonList。
使用 List Web 伺服器控制項最常見的工作之一,是判斷使用者已選取哪個 (些) 項目。根據清單控制項允許單一或多重選取與否,程序會隨之不同。
當使用 DropDownList 控制項、RadioButtonList 控制項和單一選取的 ListBox 控制項時,請使用下列程序。
若要判斷單一選取清單控制項中的選取
使用下列任一方法:
若要取得選取項目的索引值,請讀取 SelectedIndex 屬性的值。索引以零起始。若尚未選取,則屬性值為 –1。
若要取得選取項目的內容,請取得控制項的 SelectedItem 屬性。此屬性會傳回 ListItem 型別的物件。您可藉由取得物件的 Text 或 Value 屬性,來取得選取項目的內容。
安全性注意事項:
Web Form 網頁中的控制項可能包含惡意的用戶端指令碼。根據預設,Web Form 網頁會驗證該使用者的輸入內容中沒有包含指令碼或 HTML 項目。如需詳細資訊,請參閱 HOW TO:利用將 HTML 編碼套用至字串的方法,防止會在 Web 應用程式中發生的指令碼攻擊。
下列程式碼範例會示範如何測試 RadioButtonList 控制項中選取了哪個項目。程式碼會先讀取 SelectedIndex 屬性值 (設為 –1) 來檢查是否有選取,直到使用選取項目為止。接著取得 SelectedItem 物件並顯示該物件的 Text 屬性。
Protected Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Is anything selected? The index is -1 if nothing is selected. If RadioButtonList1.SelectedIndex > -1 Then Label1.Text="You chose: " & RadioButtonList1.SelectedItem.Text End If End Sub
Protected void Button1_Click (object sender, System.EventArgs e) { // Is anything selected? The index is -1 if nothing is selected. if (RadioButtonList1.SelectedIndex > -1) { Label1.Text="You chose: " + RadioButtonList1.SelectedItem.Text; } }
若清單控制項支援多重選取,則必須瀏覽控制項並且逐一檢查已選取的項目。
若要判斷多重選取清單控制項的選取
瀏覽控制項的 Items 集合,並測試每一個別項目的 Selected 屬性。
下列程式碼範例會示範如何在稱為 ListBox1 的多重選取 ListBox 控制項中測試選取。此程式碼顯示標籤中已選取項目的清單。
Protected Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim msg As String Dim li As ListItem msg = "" For Each li In ListBox1.Items If li.Selected = True Then msg = msg & "<br>" & li.Text & " selected." End If Next Label1.Text = msg End Sub
Protected void Button1_Click(object sender, System.EventArgs e) { string msg = "" ; foreach(ListItem li in ListBox1.Items) { if(li.Selected == true) { msg += "<BR>" + li.Text + " is selected."; } } Label1.Text = msg; }