Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在gridview中查找选中的单选按钮?_C#_Asp.net_Gridview_Radio Button - Fatal编程技术网

C# 如何在gridview中查找选中的单选按钮?

C# 如何在gridview中查找选中的单选按钮?,c#,asp.net,gridview,radio-button,C#,Asp.net,Gridview,Radio Button,如何找到选中的单选按钮? 有一个带有收音机类型的hatml输入,有4个选项可供选择,称为o1 o2 o3和o4。 我可以毫无问题地访问单选按钮。 我应该如何检查选择了哪个选项 <asp:GridView OnRowCommand="SelectedPollGridView_RowCommand" ID="SelectedPollGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="PollID" DataSou

如何找到选中的单选按钮? 有一个带有收音机类型的hatml输入,有4个选项可供选择,称为o1 o2 o3和o4。 我可以毫无问题地访问单选按钮。 我应该如何检查选择了哪个选项

<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>
现在我应该如何检查选择了哪个单选按钮

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

非常感谢。

HtmlInputRadioButton已选中属性名称
(返回布尔类型),您可以使用此道具。检查选择了哪个单选按钮

对于示例,在RowCommand事件处理程序中获得单选按钮控件后,必须检查该属性。像这样:

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.
}
编辑

要对单选按钮进行分组,应为组中的所有单选按钮设置相同的名称:

...
<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") %>' />
...
。。。
...
...
...
...

不久前,我遇到过类似的情况,我使用下面的逻辑解决了这个问题

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
            }
        }
for(int i=0;i
因此,所有行在网格中都有复选框,循环遍历所有数据并检查行是否被选中。希望有帮助:)


谢谢你。但它不起作用,因为默认情况下,所有单选按钮都被选中==true。这意味着O1Radio.Checked始终为真,即使我单击另一个单选选项。因为您为每个单选按钮设置了不同的名称,请查看编辑的答案。您可以在此处查看吗?再次非常感谢:)我不确定我是否理解正确,但rusmus的答案应该很好,你尝试过他的方法吗?事实上,我忽略了这个方法,使用了四个按钮而不是单选按钮列表,每个按钮都使用了四个命令名。你可以在这里查看。非常感谢你的回答。但是gridview中有单选列表按钮,它是一个HTML5输入控件。第一个答案解决了问题。再次感谢:)