SelectedValue of DropDownList in Repeater

15,470

You are almost there. You just need to cast DataItem to DataRowView, and assign it to DropDownList like this -

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;
        }
    }
}
Share:
15,470
dmr
Author by

dmr

Updated on August 01, 2022

Comments

  • dmr
    dmr over 1 year

    How do I set the selected item of a dropDownList inside a repeater?

    The repeater is bound to the repeaterData DataTable and the dropDownList is bound to dropDownList DataTable in the code behind. I need to set the SelectedValue property of the DropDownList to the value of a field from the repeaterData table.

    This is what I've tried:

    <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>
    

    Code to populate repeater:

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

    Code to populate dropdownlist:

    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();
                }
    }