Взаимоисключающий выбор Radiobutton в gridView.ASP.NET C # - PullRequest
4 голосов
/ 29 июня 2011
    <asp:TemplateField HeaderText="Select One">

    <ItemTemplate>
    <asp:RadioButton ID="RadioButton1" runat="server" />

    </ItemTemplate>

    </asp:TemplateField> 

aspx.cs

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridViewRow di in GridView1.Rows)
    {
        RadioButton rad = (RadioButton)di.FindControl("RadioButton1");

        if (rad.Checked&&rad!=null)
        {
            s = di.Cells[1].Text;
        }

    }

    Response.Redirect("applicants.aspx?form=" +s);

}

Я выбираю строки, выбранные с этим, но у меня есть проблема, я хочу, чтобы пользователь мог выбрать только одну radiobutton, но егоразрешить выбор всех radiobutton одновременно. Можете ли вы помочь мне решить эту проблему, пожалуйста.пожалуйста. enter image description here

Ответы [ 5 ]

3 голосов
/ 27 октября 2012

Может быть, я слишком поздно здесь на вечеринке, но это поможет, проверить здесь ......

Это может быть полезно для тех, кто следит за этим ответом в будущем.

1 голос
/ 29 июня 2011

На странице ASP вы должны установить свойство GroupName одинаковым для всех переключателей, например ::10000*

<asp:RadioButton ID="RadioButton1" runat="server" GroupName="RadioGroup" />
0 голосов
/ 27 марта 2015

Использование свойства GroupName само по себе не будет работать, каждый переключатель будет по-прежнему получать уникальный атрибут имени, поскольку они находятся в разных строках сетки.

Один из вариантовчтобы выдать разметку переключателя вручную, используя элемент управления Literal ( пример ).Это упростит группировку переключателей на стороне клиента, но потребует немного больше работы, чтобы определить, какая кнопка была выбрана при обратной передаче.

Когда мне понадобилось такое поведение, я обнаружил, что легче сохранитьпереключатели в качестве элементов управления на стороне сервера, и просто используйте группу кнопок w / jQuery.Поместите RadioButton в поле TemplateField, как вы показали, затем добавьте этот код, чтобы снять отметку со всех остальных кнопок, когда одна из них отмечена:

$(document).ready(function () {
    // could also pass in a unique ID selector
    createManualRadioButtonGroupForGridView(".myGridViewClass");
});

function createManualRadioButtonGroupForGridView(gridViewSelector) {
    $(gridViewSelector + " input[type=radio]").change(function () {
        var checkedRadioButton = this;
        $(gridViewSelector + " input[type=radio]").each(function (e) {
            if (this !== checkedRadioButton) {
                $(this).prop("checked", false);
            }
        });
    });
}
0 голосов
/ 25 ноября 2014

Вы можете попробовать эту ссылку, чтобы выбрать одну радиокнопку в сетке: http://www.c -sharpcorner.com / uploadfile / krishnasarala / select-single-radio-button-in-gridview-in-Asp-Net /

0 голосов
/ 05 апреля 2014

хорошо, для этого вы можете использовать следующий код, прежде всего вы должны определить groupName. Код будет работать

 <asp:RadioButton ID="RadioButton1" OnCheckedChanged="rbSelector_CheckedChanged" AutoPostBack="true" GroupName="Apply" runat="server"></asp:RadioButton>

C #

protected void rbSelector_CheckedChanged(object sender, System.EventArgs e)
{
    foreach (GridViewRow oldrow in GridView2.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;
}
...