簡體   English   中英

在網格視圖的每一行中僅允許檢查一個單選按鈕

[英]Allowing only one radio button to be checked in each row of grid view

大家好,我使用網格視圖將多行記錄插入數據庫。 這是我的網格視圖的樣子 在此處輸入圖片說明

問題是可以選擇所有單選按鈕,我只需要為每一行選擇一個單選按鈕。 我的Web表單的工作方式是用戶必須使用單選按鈕從兩個文本框中選擇正確的答案,然后我必須將選中的答案提交到數據庫。 這可能嗎?

aspx:`

             <asp:ButtonField Text="SingleClick" CommandName="SingleClick"
                    Visible="False" />

                    <asp:TemplateField HeaderText="Question">
                        <ItemTemplate>
                            <br />
                            <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Answer">
                        <ItemTemplate>
                            <br />
                            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                            <asp:RadioButton ID="RadioButton1" runat="server" />
                            <br />
                            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                            <asp:RadioButton ID="RadioButton2" runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField ShowHeader="False">
                        <FooterTemplate>
                            <asp:Button ID="btnAdd" runat="server" Text="+" onclick="btnAdd_Click1" />
                        </FooterTemplate>

                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    </td>
</tr>`

后面的代碼:

  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
    {
        //Clear the existing selected row 
        foreach (GridViewRow oldrow in GridView1.Rows)
        {
            ((RadioButton)oldrow.FindControl("RadioButton1")).Checked = false;
        }

        //Set the new selected row
        RadioButton rb = (RadioButton)sender;
        GridViewRow row = (GridViewRow)rb.NamingContainer;
        ((RadioButton)row.FindControl("RadioButton1")).Checked = true;

    }

我假設您正在談論ASP.NET。 您是否嘗試將單選按鈕分組在一起?

這是一個例子。

<asp:RadioButton id="rBtn1" GroupName="Fruits"
         Text="Apple" runat="server"/>
<asp:RadioButton id="rBtn2" GroupName="Fruits"
         Text="Orange" runat="server"/>
<asp:RadioButton id="rBtn3" GroupName="Colors"
         Text="Blue" runat="server"/>
<asp:RadioButton id="rBtn4" GroupName="Colors"
         Text="Red" runat="server"/>

選擇蘋果后,無法選擇橙色。 如果在選擇Apple時選擇了橙色,則將自動取消選擇Apple。 但是,如果選擇了Apple,則單擊“藍色”時,不會取消選擇Apple。

剛剛嘗試使用javascript類似功能

<script language="javascript" type="text/javascript">
function SelectSingleRadiobutton(rdbtnid) {
var rdBtn = document.getElementById(rdbtnid);
var rdBtnList = document.getElementsByTagName("input");
for (i = 0; i < rdBtnList.length; i++) {
if (rdBtnList[i].type == "radio" && rdBtnList[i].id != rdBtn.id)
{
rdBtnList[i].checked = false;
}
}
}
</script>

網格視圖

<asp:GridView ID="gvdata" runat="server" CssClass="Gridview" AutoGenerateColumns="false" DataKeyNames="UserId" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:RadioButton id="rdbUser" runat="server" OnClick="javascript:SelectSingleRadiobutton(this.id)" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UserName" HeaderText="Name"/>
<asp:BoundField DataField ="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="Location" HeaderText="Location" />
</Columns>
</asp:GridView>

嘗試檢查aspdotnet

檢查這個asp.net

希望它能工作。

<input id="HDDepMood_0" name="DepMood" type="radio"  runat="server" />
Same name for the one group. 

我想你可能會這樣:-

protected void rbtnSelect_CheckedChanged(object sender, EventArgs e)
{
RadioButton selectButton = (RadioButton)sender;
GridViewRow gvrow = (GridViewRow)selectButton.Parent.Parent;
var radio = (RadioButton)gvRow.FindControl("rdo");// rdo is ID of your radio button:-
if(radio[0].id=selectButton.id)
radio[1].checked=false;
else if(radio[1].id=selectButton.id)
radio[0].checked=false;
}

只需在頁面上添加一些腳本即可設置組名:

$('input[type=radio]').each(function () {
    var array = $(this).attr('name').split('$');
    $(this).attr('name', array[array.length - 1]);
});

這會將顯示的名稱調整為正確的組名稱。

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script language="javascript">
    function singleRbtnSelect(chb) {
        $(chb).closest("table").find("input:radio").prop("checked", false);
        $(chb).prop("checked", true);
    }
</script>  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM