【发布时间】:2014-06-12 15:45:03
【问题描述】:
我有一个 Gridview 控件,并且我在 itemtemplate 中放置了一个 RadioButton。当我单击一个按钮时,我试图获取单选按钮的选中属性。但是当我单击选中的属性时总是返回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();
}
}
标签中的结果总是 False。我在应用程序中使用 Ajaxcontroltoolkit,更新面板中存在上述控件,我什至尝试在触发器中放置按钮和事件,但结果是相同的。请帮忙。
问候,
努森·A·R
【问题讨论】:
-
何时分配和加载
GridView的DataSource?请注意,您应该只在if(!IsPostBack)上这样做,而不是在每次回发时这样做。 -
数据源是什么,数据是否来自数据库?
-
你在哪里使用 foreach 语句?在您的 Page_Load 事件或 btn_Click 内?如果它在 Page_Load 中,则该值始终为 false,但是如果将循环放在 btn_Click 方法中,那么它应该可以正常工作,除非您从页面加载中调用它而不检查 IsPostBack 属性
-
对不起,我忘了把 If(!IsPostBack) 放在页面加载中。现在它工作正常。谢谢你们所有的cmets。我真的很感激。