c# asp.net gridview radio-button

c# - cómo encontrar el botón de selección marcado en una vista de cuadrícula?



asp.net gridview (2)

Tuve un tipo similar de situación hace algún tiempo, que resolví usando la siguiente lógica.

for (int i = 0; i < myGrid.Rows.Count; i++) //Check if item is selected { if (((CheckBox)myGrid.Rows[i].FindControl(cbname)).Checked) //If selected { .... //Magic Happens } }

De modo que todas las filas tienen una casilla de verificación en la cuadrícula, y el ciclo itera a través de todos los datos y verifica si la fila está seleccionada. Espero eso ayude :)

Khizer Jalal

¿Cómo encontrar el botón de selección marcado? hay una entrada hatml con tipo de radio y tiene 4 opciones para seleccionar llamadas o1 o2 o3 y o4. Puedo acceder a los botones de radio sin ningún problema. ¿Cómo debo verificar qué opción está seleccionada?

<asp:GridView OnRowCommand="SelectedPollGridView_RowCommand" ID="SelectedPollGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="PollID" DataSourceID="SelectedPollSqlDataSource"> <Columns> <asp:TemplateField> <HeaderTemplate> <p runat="server" id="HeaderPTag" class="text-center"><small><%#Eval("Header") %></small></p> </HeaderTemplate> <ItemTemplate> <p runat="server" id="BodyPTag" class="text-right"><%#Eval("Body") %></p> <asp:Label Visible="false" ID="PollIDLabel" runat="server" Text=''<%#Eval("PollID") %>''></asp:Label> <div runat="server" id="MainDiv"> <div runat="server" id="O1Div"> <label runat="server" id="O1Label"> <input runat="server" type="radio" name="OptionsOne" id="O1" value=''<%#Eval("PollID") %>''> <%#Eval("O1") %> </label> </div> <div runat="server" id="O2Div"> <label runat="server" id="O2Label"> <input runat="server" class="pull-right" type="radio" name="OptionsTwo" id="O2" value=''<%#Eval("PollID") %>''> <%#Eval("O2") %> </label> </div> <div runat="server" id="O3Div"> <label runat="server" id="O3Label"> <input runat="server" class="pull-right" type="radio" name="OptionsThree" id="O3" value=''<%#Eval("PollID") %>''> <%#Eval("O3") %> </label> </div> <div runat="server" id="O4Div"> <label runat="server" id="O4Label"> <input runat="server" class="pull-right" type="radio" name="OptionsFour" id="O4" value=''<%#Eval("PollID") %>''> <%#Eval("O4") %> </label> </div> </div> <asp:Button CommandArgument=''<%# ((GridViewRow) Container).RowIndex %>'' CommandName="foo" CssClass="btn btn-info" ID="SubmitPollButton" runat="server" Text="ثبت نظر" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SelectedPollSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:GUOTSConnectionString %>" SelectCommand="SELECT DISTINCT [PollID], [Header], [Body], [O1], [O1Vis], [O2], [O2Vis], [O3], [O1Cnt], [O2Cnt], [O3Cnt], [O3Vis], [O4], [O4Cnt], [O4Vis], [PollDate] FROM [Poll] "> <SelectParameters> <asp:QueryStringParameter Name="PollID" QueryStringField="PollID" Type="Int32" /> </SelectParameters> </asp:SqlDataSource>

y estoy usando este código para acceder a él:

protected void SelectedPollGridView_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "foo") { // Convert the row index stored in the CommandArgument // property to an Integer. int index = Convert.ToInt32(e.CommandArgument); // Retrieve the row that contains the button clicked // by the user from the Rows collection. GridViewRow row = SelectedPollGridView.Rows[index]; System.Web.UI.HtmlControls.HtmlInputRadioButton O1Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O1"); System.Web.UI.HtmlControls.HtmlInputRadioButton O2Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O2"); System.Web.UI.HtmlControls.HtmlInputRadioButton O3Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O3"); System.Web.UI.HtmlControls.HtmlInputRadioButton O4Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O4"); Label myPollIDLAbel = (Label)row.FindControl("PollIDLabel"); } }

ahora ¿cómo debo verificar qué botón de radio ha seleccionado?

muchas gracias.


HtmlInputRadioButton tiene un nombre de propiedades Checked (tipo booleano de retorno), puede usar este puntal. para verificar qué botón de radio ha seleccionado.

Para muestra, después de obtener el control del botón de opción en el controlador de eventos RowCommand, entonces debe verificar el accesorio. Me gusta esto:

System.Web.UI.HtmlControls.HtmlInputRadioButton O1Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O1"); System.Web.UI.HtmlControls.HtmlInputRadioButton O2Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O2"); System.Web.UI.HtmlControls.HtmlInputRadioButton O3Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O3"); System.Web.UI.HtmlControls.HtmlInputRadioButton O4Radio = (System.Web.UI.HtmlControls.HtmlInputRadioButton)row.FindControl("O4"); if(O1Radio.Checked) { //O1Radio is selected. } else if(O2Radio.Checked) { //O2Radio is selected. } else if(O3Radio.Checked) { //O3Radio is selected. } else if(O4Radio.Checked) { //O4Radio is selected. }

EDITAR

Para agrupar botones de radio, debe establecer el mismo nombre para todos los botones de radio en un grupo:

... <input runat="server" type="radio" name="Options" id="O1" value=''<%#Eval("PollID") %>'' /> ... <input runat="server" type="radio" name="Options" id="O2" value=''<%#Eval("PollID") %>'' /> ... <input runat="server" type="radio" name="Options" id="O3" value=''<%#Eval("PollID") %>'' /> ... <input runat="server" type="radio" name="Options" id="O4" value=''<%#Eval("PollID") %>'' /> ...