Asp.net

Repeater中DropDownList的SelectedValue

  • September 20, 2015

如何在中繼器內設置 dropDownList 的選定項?

在後面的程式碼中,repeater綁定到repeaterData DataTable,dropDownList綁定到dropDownList DataTable。我需要將 DropDownList 的 SelectedValue 屬性設置為 repeaterData 表中欄位的值。

這是我嘗試過的:

<asp:Repeater runat="server" ID="myRepeater>
<ItemTemplate>
   <asp:DropDownList runat="server" CssClass="fullSelect" ID="degree_dropdown"
           AppendDataBoundItems="true" 
           selectedValue='<%#DataBinder.Eval(Container.DataItem,"degreeCode")%>'>
                 <asp:ListItem Text="Select Degree" />
    </asp:DropDownList>
</ItemTemplate>
</asp:Repeater>

填充中繼器的程式碼:

myRepeater.DataSource = myRepeaterData; //myRepeaterData is a datatable
myRepeater.DataBind();

填充下拉列表的程式碼:

protected void educationPopup_repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
       {
           DropDownList degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList;
           if (degree_dropdown != null)
           {
               degree_dropdown.DataSource = degrees; //a datatable
               degree_dropdown.DataTextField = "degree";
               degree_dropdown.DataValueField = "code";
               degree_dropdown.DataBind();
           }
}

你快到了。您只需要轉換DataItemDataRowView,並將其分配給DropDownList這樣的 -

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || 
      e.Item.ItemType == ListItemType.AlternatingItem)
   {
       var degree_dropdown = e.Item.FindControl("degree_dropdown") as DropDownList;
       string degreeCode = (string) ((DataRowView) e.Item.DataItem)["degreeCode"];

       if (degree_dropdown != null)
       {
           degree_dropdown.DataSource = degrees; //a datatable
           degree_dropdown.DataTextField = "degree";
           degree_dropdown.DataValueField = "code";
           degree_dropdown.DataBind();

           if (degree_dropdown.Items.FindByValue(degreeCode) != null)
               degree_dropdown.SelectedValue = degreeCode;
       }
   }
}

引用自:https://stackoverflow.com/questions/16801364