Search code examples
c#asp.netcheckboxlistradiobuttonlist

How can I get selected values from radio button list and check box list?


I'm trying to get selected values from radio button list and check box list at asp.net, C#. Here's my code.

aspx.cs

protected void Next_Click(object sender, EventArgs e)
    {
        var retList = new List<string>();

        foreach (RepeaterItem item in questionRepeater.Items)
        {
            // Checking the item is a data item
            if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
            {

                var rdbList = item.FindControl("RadioButtonList1") as RadioButtonList;
                // Get the selected value
                if (rdbList != null)
                {
                    retList.Add(rdbList.SelectedValue);
                }
            }
        }


        foreach (RepeaterItem item in questionRepeater.Items)
        {
            // Checking the item is a data item
            if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
            {
                var rdbList = item.FindControl("CheckBoxList1") as CheckBoxList;
                // Get the selected value
                if (rdbList != null)
                {
                    retList.Add(rdbList.SelectedValue);
                }
            }



        }
    }

aspx

<asp:Repeater ID="questionRepeater" runat="server">
<ItemTemplate>
     <div runat="server" visible='<%# (Eval("QUESTION_TYPE").ToString() == 
     "0") %>'> 
      <table style="width:100%; table-layout: fixed;">  
                <asp:RadioButtonList id="RadioButtonList1" CellSpacing="50" 
      TextAlign="Left" runat="server" 
      DataSource='<%#GetChild(Container.DataItem,"ChoicesRelate") %>' 
      DataTextField="CHOICES_CONTENT" DataValueField="CHOICES_NO">
                </asp:RadioButtonList>
           </table> 
     </div>

     <div runat="server" visible='<%# (Eval("QUESTION_TYPE").ToString() == 
     "1") %>'>
      <table style="width:100%; table-layout: fixed;">
     <asp:CheckBoxList id="CheckBoxList1" CellSpacing="50" TextAlign="Left" 
   runat="server"DataSource='<%#GetChild(Container.DataItem,"ChoicesRelate") 
   %>' DataTextField="CHOICES_CONTENT" DataValueField="CHOICES_NO">
                </asp:CheckBoxList>  
          </table>
     </div>      
    <br />
</ItemTemplate> 
</asp:Repeater>

I refered below Answser. Get radio button list responses with data source asp.net

problem

I can't get all selected values(just one value) from check box list, while I can get all from radio button list.. What should I do? Please help me..


Solution

  • you can try something like this:

    using System.Linq
    ...
    foreach (RepeaterItem item in questionRepeater.Items)
    {
        // Checking the item is a data item
        if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
        {
            var rdbList = item.FindControl("CheckBoxList1") as CheckBoxList;
            // Get the selected value
            if (rdbList != null)
            {
                //get selected items' values 
                List<string> selectedItems = rdbList.Items.Cast<ListItem>()
                    .Where(li => li.Selected)
                    .Select(li => li.Value)
                    .ToList();
    
                //add to your list of strings
                retList.AddRange(selectedItems);
            }
        }
    }
    

    or, in case you don't want to use Linq,

    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
    {
        var rdbList = item.FindControl("CheckBoxList1") as CheckBoxList;
        // Get the selected value
        if (rdbList != null)
        {
            foreach (ListItem li in rdbList.Items)
            {
                if (li.Selected)
                    retList.Add(li.Value);
            }
        }
    }