我的gridview中有多个单选按钮列,我想一次选择一列
答案 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);
}
}