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
的DataSource
?请注意,您应该只做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
}
}