Search code examples
c#asp.netdata-bindingtelerikrad-controls

Bind datasource which type is List<String> to dropdownlist which includes item template


here is my dropdownlist

 <telerik:RadDropDownList ID="ddDefaultValues" runat="server" DropDownWidth="100" Width="20px" HorizontalAlign="Center" CssClass="app-selectbox" AppendDataBoundItems="true" >
            <ItemTemplate>
                <asp:Label ID="Label1" Text='  <%# DataBinder.Eval(Container.DataItem, "String")%>' runat="server">
                </asp:Label>
                <telerik:RadButton runat="server" Text="-" Width="15" CssClass="button-delete" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins="false">
            </telerik:RadButton>
    </ItemTemplate>
</telerik:RadDropDownList>

and I bind data to my dropdown like that in code behind. I am using "List< String >" as datasource

List<String>  liste = new List<String>();
liste.Add("-1");
liste.Add("-2");
ddDefaultValues.DataSource = liste;
ddDefaultValues.DataBind();

but Text=' <%# DataBinder.Eval(Container.DataItem, "String")%>' didn't work I tried also Text=' <%#Container.DataItem%>' but this way didn't work too.

How can I set dropdownlistitem's value to label's text ?

Thx.


Solution

  • Container.DataItem should work with such simple structures. It did for me:

         <telerik:RadDropDownList ID="ddDefaultValues" runat="server" DropDownWidth="100" Width="20px" HorizontalAlign="Center" CssClass="app-selectbox" AppendDataBoundItems="true" >
                <ItemTemplate>
                    <asp:Label ID="Label1" Text='<%# Container.DataItem%>' runat="server">
                    </asp:Label>
                    <telerik:RadButton ID="RadButton1" runat="server" Text="-" Width="15" CssClass="button-delete" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins="false">
                </telerik:RadButton>
        </ItemTemplate>
    </telerik:RadDropDownList>
    

    and server code

    private void Page_Load(object sender, System.EventArgs e)
    {
        List<String> liste = new List<String>();
        liste.Add("-1");
        liste.Add("-2");
        ddDefaultValues.DataSource = liste;
        ddDefaultValues.DataBind();
    }
    

    enter image description here