| 屬性 | 用途 | 範例值 |
| DataSource | 資料來源 | DataTable、List<T>、IEnumerable |
| DataValueField | 實際提交的值 | "Id", "CategoryId", "Code" |
| DataTextField | 使用者看到的文字 | "Name", "Title", "Description" |
| AppendDataBoundItems | 是否保留靜態項目 | true/false(預設 false) |
加入預設提示項目(如「請選擇」)
DropDownList1.Items.Insert(0, new ListItem("請選擇", ""));
// 或標記法
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="請選擇" Value="" />
</asp:DropDownList>
2. 取得使用者選取值
// 取得 Value(對應 DataValueField)
int categoryId = int.Parse(this.DropDownList1.SelectedValue);
// 取得 Text(對應 DataTextField)
string categoryName = this.DropDownList1.SelectedItem.Text;
// 取得索引
int index = this.DropDownList1.SelectedIndex; // -1 表示未選取
常用屬性對照
| 需求 | 屬性/方法 | 備註 |
| 選取的值 | SelectedValue | 字串型別,需自行轉型 |
| 選取的文字 | SelectedItem.Text | 若無選取會拋例外,先判斷 SelectedIndex >= 0 |
| 選取索引 | SelectedIndex | 可用於判斷是否有選取 |
| 所有項目 | Items 集合 | ListItemCollection,可迴圈 |
3. 進階技巧
多欄位顯示(Text 組合多個欄位)
資料來源查詢時組合:
SELECT Id, Name + ' (' + Code + ')' AS DisplayText FROM Categories
或綁定後處理:
DropDownList1.DataBound += (s, e) => {
foreach (ListItem item in DropDownList1.Items)
{
// 從 DataItem 取得額外欄位組合 Text
}
};
啟用/停用特定項目
DropDownList1.Items.FindByValue("3").Enabled = false; // 灰色不可選
自動回傳
DropDownList1.AutoPostBack = true;
DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged;
常見錯誤避坑
- Page_Load 重複綁定:必須包在
if (!IsPostBack) 內
- SelectedValue 為空字串轉 int 擲例外:先判斷
string.IsNullOrEmpty(ddl.SelectedValue)
- 資料來源欄位名稱拼寫錯誤:DataValueField/DataTextField 需與資料來源欄位名完全一致(含大小寫)
掌握這些基礎操作,即可輕鬆駕馭 DropDownList 於各種表單與查詢介面中。
- 上一篇文章: .NET 多執行緒異常處理技巧:從基礎捕獲到全域策略
- 下一篇文章: ASP.NET GridView 配合 CheckBox 實現全選/取消全選功能
Copyright ©
程式碼之家 All Rights Reserved