请帮帮我 我有一个名为GridViewGender的Gridview,它带有一个RadioButtonList 内联代码是
<asp:GridView ID="GridViewGender" runat="server"
AutoGenerateColumns="False"
Width="494px" DataKeyNames="ren">
<Columns>
<asp:BoundField DataField="ren" HeaderText="Items" />
<asp:TemplateField HeaderText="Attendance" >
<ItemTemplate>
<asp:RadioButtonList ID="RadioButtonListGender" runat="server" Enabled="true"
RepeatDirection="Horizontal" TextAlign="Left"
>
<asp:ListItem Value="1">Male</asp:ListItem>
<asp:ListItem Value="2">Female</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
MyClass obj = new MyClass ();
GridViewGender.DataSource = obj.check();
GridViewGender.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
List<string> checking = new List<string>();
for(int i = 0 ; i < GridViewGender.Rows.Count ; i ++)
{
GridViewRow row = GridViewGender.Rows[i];
string rr = Convert.ToString( ((RadioButtonList)row.FindControl("RadioButtonListGender")).SelectedItem.Text) ;
checking .Add((string.IsNullOrEmpty(rr)) ? string.Empty : rr);
}
}
答案 0 :(得分:0)
看起来每次进行页面加载时都会重新绑定GridView,因此用户的选择可能会被覆盖。
按要求。
答案 1 :(得分:0)
好的旧!IsPostBack
用于绑定
protected void Page_Load()
{
if (!IsPostBack)
{
// Binding code
}
}
并在GridView声明中使用EnableViewState="true"
,这样每次加载页面时数据都不会反弹。
此外,如果您在投射时遇到问题,可以尝试使用row.Cells[1].Controls[1] as RadioButtonList
而不是FindControl进行投射。