首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

DropDownList 修改默認選中項兩大實戰技巧:SelectedIndex 與 FindByValue

     編輯:關於ASP.NET

場景還原

列表頁點擊「修改」,將對應記錄數據回填到表單,其中省份下拉框需根據數據庫存儲的 ProvinceID 自動選中對應項。

技巧一:SelectedIndex 索引對應法

// 假設綁定數據 ID 從 1 開始,DropDownList 索引從 0 開始
this.DropDownListProvince.SelectedIndex = pro.ID - 1;

前提:綁定數據順序固定,且 ID 連續無縺隙。一旦數據順序變更或存在刪除導致 ID 不連續,此法失效。

技巧二:FindByValue 值精確匹配法(推薦)

// 通過數據值精確查找並選中
ListItem item = this.DropDownListProvince.Items.FindByValue(pro.ID.ToString());
if (item != null) {
    this.DropDownListProvince.ClearSelection();
    item.Selected = true;
}

優勢:不依賴綁定順序,不要求 ID 連續,只要 Value 匹配即可精準定位,健壯性強。

完整示例:Repeater 列表聯動修改

<asp:Repeater ID="RepeaterList" runat="server" OnItemCommand="RepeaterList_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton Text="修改" CommandName="Edit" CommandArgument='<%# Eval("ID") %>' runat="server" />
    </ItemTemplate>
</asp:Repeater>

// 後台
protected void RepeaterList_ItemCommand(object source, RepeaterCommandEventArgs e) {
    if (e.CommandName == "Edit") {
        int id = Convert.ToInt32(e.CommandArgument);
        Province pro = GetList().Find(p => p.ID == id);
        LiteralID.Text = pro.ID.ToString();
        LiteralLevel.Text = pro.Pid.ToString();
        // 推薦用法
        ListItem li = DropDownListProvince.Items.FindByValue(pro.ID.ToString());
        if (li != null) { DropDownListProvince.ClearSelection(); li.Selected = true; }
    }
}

常見坑點提醒

  • DataBind() 會重置選中狀態,賦值操作必須在 DataBind 之後
  • 多次 DataBind 導致項目重複,需先 Items.Clear() 或判斷 !IsPostBack
  • Value 類型不匹配(如 int vs string)導致 FindByValue 失效,統一 ToString()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved