gridview中的多个单选按钮列

时间:2010-08-07 07:37:37

标签: asp.net .net

我的gridview中有多个单选按钮列,我想一次选择一列

2 个答案:

答案 0 :(得分:3)

正如我所知,你想只检查一行中的一个单选按钮,所以只需添加一个属性

GroupName与所有单选按钮具有相同的值,它将起作用..

e.g

    <asp:TemplateField HeaderText="More Than 20% Estimate"  >
 <ItemTemplate >
 <asp:RadioButton ID="rdbGVRow8" GroupName ="Program"  onclick="javascript:CheckOtherIsCheckedByGVIDMore(this);" runat="server" />
  </ItemTemplate>
 </asp:TemplateField>


 <asp:TemplateField HeaderText="10% to 20% overestimate"  >
 <ItemTemplate >
 <asp:RadioButton ID="rdbGVRow7" GroupName ="Program" onclick="javascript:CheckOtherIsCheckedByGVIDMore(this);" runat="server" />
 </ItemTemplate>
 </asp:TemplateField>
    .
    .
    .
    .

其中,程序是一个值,您可以给出自己的值,但记住所有单选按钮的值相同。

答案 1 :(得分:2)

这个相当冗长的教程是我见过的最好的解决这个问题的教程

添加单选按钮的GridView列
http://www.asp.net/data-access/tutorials/adding-a-gridview-column-of-radio-buttons-cs

如果您为按钮使用相同的组名,但它们仍无法正常工作:

“单选按钮未分组的原因是因为它们的呈现名称属性不同,尽管具有相同的GroupName属性设置。”如果你查看源代码,它可能看起来像这样:

<input id="ctl00_MainContent_Suppliers_ctl02_RowSelector" 
    name="ctl00$MainContent$Suppliers$ctl02$SuppliersGroup" 
    type="radio" value="RowSelector" />
<input id="ctl00_MainContent_Suppliers_ctl03_RowSelector" 
    name="ctl00$MainContent$Suppliers$ctl03$SuppliersGroup" 
    type="radio" value="RowSelector" />

修复方法是使用文字控件将名称注入。

protected void Suppliers_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // Grab a reference to the Literal control
        Literal output = (Literal)e.Row.FindControl("RadioButtonMarkup");
        // Output the markup except for the "checked" attribute
        output.Text = string.Format(
            @"<input type="radio" name="SuppliersGroup" " +
            @"id="RowSelector{0}" value="{0}" />", e.Row.RowIndex);
    }
}