GridView中RadioButtons的复选状态在回发后不会改变

本文关键字:改变 状态 RadioButtons GridView | 更新日期: 2023-09-27 18:08:02

我有一个Gridview控件,我在itemtemplate中放置了一个RadioButton。当我点击一个按钮时,我试图获取单选按钮的checked属性。但是当我点击checked属性时总是返回false。请查看下面的代码,让我知道我在哪里做错了。

aspx代码

<asp:GridView ID="gvDepartments" runat="server" AutoGenerateColumns="False" GridLines="None"AllowPaging="true" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt">
      <Columns> 
       <asp:TemplateField>
         <ItemTemplate>
                 <asp:RadioButton ID="rdbtn" runat="server" />
         </ItemTemplate>
       </asp:TemplateField>
      </Columns>
    </asp:GridView>
<asp:Label ID="lbl" runat="server"></asp:Label>
<asp:Button ID="btn" runat="server" Text="Save" OnClick="btn_Click" CssClass="button small"/>

代码后面按钮点击

foreach (GridViewRow row in gvDepartments.Rows)
{
   if (row.RowType == DataControlRowType.DataRow)
    {
        RadioButton rd = (RadioButton)row.FindControl("rdbtn");
        lbl.Text += rd.Checked.ToString();// +rd1.Checked.ToString();
    }
}

Result将在标签always中为False always。我在应用程序中使用Ajaxcontroltoolkit,上面的控件存在于更新面板中,我甚至试图将按钮和事件放在触发器中,但结果是相同的。请帮助。

问候,

GridView中RadioButtons的复选状态在回发后不会改变

何时分配和加载GridViewDataSource ?请注意,您应该只做if(!IsPostBack),而不是每次回发。所以使用Page.IsPostBack属性。

所以假设你使用Page_Load:

protected void Page_Load(Object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        DataBindGridView(); // method that assigns DataSource and calls DataBind
    }
}