SelectionList控制項的列表中只有一個可視的資料項目,其它的資料項目只能以隱藏值的形式與可視的資料項目進行關聯。要在伺服器控制項文法中指定隱藏值,可以在<Item>元素中使用Value屬性,並且將Value屬性指定某資料項目即可。如果使用動態綁定的形式來構建列表的話,那麼你可以使用DataValueField屬性指定資料來源中的某個欄位作為隱藏值。
文法
SelectionList清單控制項的文法如下面的清單所示:
<mobile:SelectionList
runat="server"
id="id"
Alignment="{NotSet|Left|Center|Right}"
BackColor="backgroundColor"
BreakAfter="{True|False}"
Font-Bold="{NotSet|False|True}"
Font-Italic="{NotSet|False|True}"
Font-Name="fontName"
Font-Size="{NotSet|Normal|Small|Large}"
ForeColor="foregroundColor"
StyleReference="StyleReference"
Wrapping="{NotSet|Wrap|NoWrap}"
DataMember="dataMember"
DataSource="dataSource"
DataTextField="DataTextField"
DataValueField="DataValueField"
SelectType="{DropDown|ListBox|Radio|MultiSelectListBox|CheckBox}"
Title="String"
OnItemDataBind="itemDataBindHandler"
OnSelectedIndexChanged="selectedIndexChangedHandler">
<!-- 可選,以靜態方式聲明資料項目-->
<Item Text="Text" Value="Value" Selected="{True|False}"/>
</mobile:SelectionList>
至於要顯示的列表資料項目我們可以從資料來源中進行讀取,這種情況下我們需要使用DataMember、 DataSource、DataTextField和DataValueField等屬性。當然你也可以使用<item>標籤靜態地定義要顯示的資料項目和隱藏值。注意,在上述SelectionList清單控制項的文法中,並沒有包含SelectedIndex這個屬性,這是因為我們不可以在伺服器控制項文法中使用它,只有通過代碼才可以使用SelectedIndex屬性來擷取當前選項的索引值。如果在伺服器控制項文法中要使某資料項目處於被選中的狀態,你可以在與該資料項目對應的<Item> 標籤中設定Selected屬性為True。
屬性和事件
下表描述列舉了SelectionList清單控制項中的一些常用的屬性和事件,其中"類型"列描述了對應屬性的類型,這樣你就可以在代碼中對這些屬性進行設定和讀取,至於這些屬性可用的值你可以參考"文法"小節中的說明。
| 屬性/事件 |
類型 |
描述 |
| DataMember |
String |
只有當SelectionList清單控制項與一個System.Data.DataTable或System.Data.DataSet對象綁定時才使用此屬性。該屬性指定用來指定DataSet中那個DataTable是清單控制項的真正資料來源。 |
| DataSource |
Object |
只有當SelectionList清單控制項採用資料繫結的方式定義資料項目時才使用這個屬性。DataSource屬性用來指定一個DataSet對象,或是一個集合對象作為清單控制項的資料來源。 |
| DataTextField |
String |
當SelectionList清單控制項綁定到DataSet或集合對象時,DataTextField屬性用來指定資料來源中的某個欄位在列表中進行顯示。 |
| DataValueField |
String |
當SelectionList清單控制項綁定到DataSet或集合對象時,DataValueField 屬性用來指定資料來源中的某個欄位,用來提供隱藏值與列表顯示的資料項目進行關聯。 |
| Items |
System.Web. UI.MobileControls.Mobil eListItemCollection |
我們可以使用這個屬性訪問MobileListItemCollection對象,而這個對象又是儲存整個列表中的所有資料項目對應的System.Web.UI.MobileControls.MobileLi stItem對象。你可以在代碼中對這個集合中的各個MobileListItem對象進行操作。 |
| Rows |
Integer |
當清單控制項的SelectType屬性值為ListBox 或MultiSelectListBox時,Rows屬性用來設定可以在HTML瀏覽器和CHTML瀏覽器中可呈現出的資料項目行數。由於WML瀏覽器不支援多行顯示,所有設定該屬性是無效的。 |
| SelectedIndex |
Integer |
返回或設定當前那個資料項目被選中。如果SelectionList清單控制項在當前為多選的模式時,也就是說如果你在一個列表中選擇可多個資料項目,那麼SelectedIndex屬性返回的是第一個被選中的資料項目的索引。 |
| Selection |
MobileListItem |
返回被選中的資料項目(一個MobileListItem對象),如果在列表中沒有選擇任何資料項目的話,將返回null。 |
| SelectType |
System.Web.UI. MobileControls. ListSelectType的枚舉值: DropDown| ListBox|Radio| MultiSelectListBox|CheckBox |
該枚舉用來反映SelectionList清單控制項在裝置瀏覽器上的顯示樣式。CheckBox 和MultiSelectListBox允許多項選擇,其它的枚舉值只允許單項選擇。該屬性的預設值為DropDown. |
| ItemDataBind (event) |
事件處理函數 |
當SelectionList清單控制項以資料繫結的形式定義資料項目時,在每個資料項目被添加到列表中時觸發這個事件。 |
| SelectedIndexChanged (event) |
事件處理函數 |
如果SelectionList控制項處於單項模式時,當使用者使選項方式改變時將調用這個事件處理函數。該事件只有在一個Command控制項產生一個從用戶端到伺服器端的回傳時才觸發,也就是說該事件是無法由SelectionList控制項自動觸發的,必須藉助於Command控制項。 |
SelectedIndex和Selection這兩個屬性只有當某個資料項目被選擇後才可以在代碼中進行設定。你可以在代碼中讀取SelectedIndex的屬性值,以確定當前選中的資料項目在列表中對應的索引值。Selection也是類似的,只不過它返回的是與當前選中的資料項目對應的MobileListItem對象,而不是索引值。
當使用者在一個Selection列表中做出相應的選擇後,用戶端瀏覽器上的Form表單將那些被選擇的一個或多個資料項目進行相應的編碼,並將這些編碼資訊添加到要回傳到伺服器的資料中,這樣ASP.NET運行時就可以利用這些被回傳到伺服器的資料來更新Selection的一些屬性,例如SelectedIndex。但是Selection並不會因為使用者選擇好了資料項目後就自動地將資料資訊回傳到伺服器上,而是要藉助一個Command控制項產生回傳操作,為此你需要將這個Selection清單控制項和Command控制項放置在同一個Form控制項中。