ASP.NET 2.0 行動控制項工具箱提供三種列表控制項:SelectionList、List、ObjectList,繼承自 MobileControl → ListControl → 各具特色。本文完整比較三者特性、呈現模式、分頁支援、多選能力與適用場景。
MobileControl
└── ListControl (abstract)
├── SelectionList
├── List
└── ObjectList
| 特性 | SelectionList | List | ObjectList |
|---|---|---|---|
| 主要用途 | 單選/多選/下拉選單表單輸入 | 唯讀項目清單呈現 | 資料繫結清單,支援排序/篩選/編輯/命令 |
| 呈現模式 (SelectType) | ListBox(清單)、DropDown(下拉)、MultiSelectListBox(多選)、Radio(單選鈕)、CheckBox(核取方塊) | ListBox(項目符號)、Numbered(編號) | ListBox、DropDown、Table(表格)、Details(明細) |
| 多選支援 | ✅ 唯一支援多選 | ❌ 單選 | ❌ 單選(但可透過命令實現批次操作) |
| 分頁支援 | ❌ 無 | ✅ ItemsPerPage、PagerStyle | ✅ 內建分頁、PageSize、PagerStyle |
| 資料繫結 | DataSource/DataSourceID、DataTextField/DataValueField | 同 SelectionList | DataSourceID、自動產生欄位、AutoGenerateFields、TableFields/DetailFields |
| 命令事件 | ❌ | ❌ | ✅ ItemCommand、SelectedIndexChanged、SortCommand |
| 模板支援 | ❌ | ❌ | ✅ ItemTemplate、HeaderTemplate、FooterTemplate、PagerTemplate |
| 裝置相容性 | WML 瀏覽器可能不支援 DropDown,需 DeviceSpecific 切換 | 廣泛支援 | 需較佳裝置能力(HTML 3.2+) |
<mobile:SelectionList ID="selGender" runat="server" SelectType="DropDown">
<mobile:ListItem Text="男" Value="M" />
<mobile:ListItem Text="女" Value="F" />
</mobile:SelectionList>
<mobile:SelectionList ID="selInterests" runat="server" SelectType="CheckBox" DataSourceID="sdsInterests"
DataTextField="InterestName" DataValueField="InterestID">
</mobile:SelectionList>
取得多選值:selInterests.GetSelectedIndices() 回傳 int[],對應 Items[index].Value。
<mobile:List ID="lstNews" runat="server" DataSourceID="sdsNews"
DataTextField="Title" DataValueField="NewsID"
ItemsPerPage="5" Decorate="Numbered">
<PagerStyle NextPageText="下一頁" PreviousPageText="上一頁" />
</mobile:List>
<mobile:ObjectList ID="objProducts" runat="server" DataSourceID="sdsProducts"
AutoGenerateFields="False" TableFields="ProductName,UnitPrice,UnitsInStock"
ItemCommand="objProducts_ItemCommand">
<TableFields>
<mobile:ObjectListField DataField="ProductName" HeaderText="產品" />
<mobile:ObjectListField DataField="UnitPrice" HeaderText="價格" DataFormatString="{0:C}" />
<mobile:ObjectListCommand FieldName="Select" Text="詳情" CommandName="Detail" />
</TableFields>
<DetailFields>
<mobile:ObjectListField DataField="ProductName" HeaderText="產品" />
<mobile:ObjectListField DataField="Description" HeaderText="說明" />
</DetailFields>
<PagerStyle NextPageText="下頁" PreviousPageText="上頁" />
</mobile:ObjectList>
protected void objProducts_ItemCommand(object sender, ObjectListCommandEventArgs e)
{
if (e.CommandName == "Detail")
{
string productId = objProducts.Items[e.ListItemIndex].Value;
// 導向明細頁或設定詳細視圖
objProducts.SelectedIndex = e.ListItemIndex;
}
}
圖示說明:Pocket IE 顯示 SelectionList DropDown 為下拉選單;OpenWave WML 瀏覽器不支援下拉,自動回退顯示單選鈕清單。開發者需透過 DeviceSpecific/Choice 針對不同裝置定義替代呈現。
SelectionList(唯一多選選項)。List(輕量、分頁內建)。ObjectList(功能最完整)。SelectionList + DeviceSpecific 定義回退呈現。三大列表控制項各司其職,配合裝置適配機制,構成 ASP.NET 2.0 行動應用資料呈現與輸入的核心工具組。