Asp.net
Repeater中DropDownList的SelectedValue
如何在中繼器內設置 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(); } }
你快到了。您只需要轉換
DataItem為DataRowView,並將其分配給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; } } }