8

リピーター内で dropDownList の選択された項目を設定するにはどうすればよいですか?

コード ビハインドでは、リピーターは 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();
            }
}
4

2 に答える 2

0

HTML5 カスタム属性を使用すると、ドロップダウン値をデータ属性に設定し、ドロップダウンがデータバインドされた後に選択値として設定できます。asp:ObjectDataSource を使用してドロップダウンをバインドしました

<asp:Repeater runat="server" ID="myRepeater>
<ItemTemplate>

<asp:DropDownList runat="server" CssClass="fullSelect" ID="degree_dropdown"
            AppendDataBoundItems="true" 
            SetValue='<%#DataBinder.Eval(Container.DataItem,"degreeCode")%>'
datasourceid="dsCategory" datatextfield="degree" datavaluefield="code" onprerender="DropDownDataBinding">
                  <asp:ListItem Text="Select Degree" />
     </asp:DropDownList>
<asp:ObjectDataSource ID="dsCategory" runat="server" SelectMethod="LoadDegree" TypeName="WebApplication.WebForm1" />
</ItemTemplate>
</asp:Repeater>

コードビハインド

protected void DropDownDataBinding(object sender, EventArgs e) //Method to set the selected value on Category dropdown inside repeater
{
    DropDownList sel = (DropDownList)sender;
    sel.Value = sel.Attributes["SetValue"];
    ListItem li = new ListItem("<< Select >>", "");
    sel.Items.Insert(0,li);
}

protected DataTable LoadDegree()
{
        DataTable dt = new DataTable();
        dt = degrees; //a datatable
        return dt;

}

リピーター コントロールのバインディングは変わりません。

于 2015-05-24T12:30:12.763 に答える