View State of Radio Button in GridView

How can I maintain state of an html radio button within a <asp:gridview>?
<asp:GridView>
<columns>
<asp:TemplateField>
  <ItemTemplate>
     <input type="radio" name="rbSelect" id="rbSelect" value="<%# Eval("first_name")%> <%# Eval("last_name")%>" />
   </ItemTemplate>
</asp:TemplateField>
kevbob650Asked:
Who is Participating?
 
Alexey_VarlamovConnect With a Mentor Commented:
... and why you are not able to access the value?  the standard way is a test the "Checked" property and get value if the Checked = true:

foreach(GridViewRow row in GridView1.Rows)
{
  HtmlInputRadioButton radio1=row.FindControl("rbSelect") as HtmlInputRadioButton;
  if (radio1.Checked)
     value = radio1.Value;
  // do something with radio1
}
0
 
Alexey_VarlamovCommented:
1. What kind of state do you want to monitor? The ViewState available in server controls only, so you should use runat="server" within <input type="radio" ..> tags

2. To catch the POST value (even ViewState not used)  you can use a code like this:
  if (Request.Form["rbSelect"] == null)
            lblSelected.Text = "You didn't choose anything";
        else
            lblSelected.Text = "You choose " + Request.Form["rbSelect"];

3. To find the RadioButton objects in all rows use can use a code like this:
foreach(GridViewRow row in GridView1.Rows)
{
  HtmlInputRadioButton radio1=row.FindControl("rbSelect") as HtmlInputRadioButton;
  // do something with radio1
}
0
 
kevbob650Author Commented:
When I add the runat server line in the <input type="radio"> tag, I am able to select more than one button and I'm not able to access the value?? When I remove the runat=server line, the radio button works, I'm able to retrieve the value, but it disapperars when the form is submitted.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource2" CellPadding="6" BorderWidth="1px" BorderStyle="Solid" BorderColor="Black" style="z-index: 109; left: 15px; position: absolute; top: 343px" Font-Names="Arial" Font-Size="10pt">
            <HeaderStyle ForeColor="Black" Font-Names="Arial" Font-Size="9pt" Font-Bold="True" BackColor="#66CCCC" HorizontalAlign="Left" />
            <RowStyle ForeColor="Black" BackColor="#CCFFCC" />
            <AlternatingRowStyle ForeColor="Black" BackColor="#CCFFFF" />
            <SelectedRowStyle ForeColor="White" BackColor="#009966" />
            
            <Columns> 
                
                <asp:TemplateField>
                    <ItemTemplate>
                        <input type="radio" id="rbSelect" runat="server" value='<%#Eval("first_name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
               
                <asp:BoundField DataField="first_name" HeaderText="First Name" SortExpression="first_name" />
                <asp:BoundField DataField="last_name" HeaderText="Last Name" SortExpression="last_name" />
                <asp:BoundField DataField="title" HeaderText="Title" SortExpression="title" />
                <asp:BoundField DataField="office_phone" HeaderText="Bus Phone" SortExpression="office_phone" />
                <asp:BoundField DataField="mobile_phone" HeaderText="Cell Phone" SortExpression="mobile_phone" />
                <asp:BoundField DataField="esc_level" HeaderText="Esc Level" SortExpression="esc_level" />                
            
            </Columns>
        </asp:GridView>

Open in new window

0
 
Alexey_VarlamovCommented:
The explanation and possible solution for RadioButton grouping issue:
http://www.codeproject.com/KB/webforms/How_group_RButtons.aspx

and possible AutoPostback issue of this solution:
http://www.codeproject.com/KB/webforms/groupradiobuttons.aspx

/p.s. also, if you know the selected radio button (from previous postback), you can set the "Selected" property before rendering... i think... : )
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.