我在转发器控件中有四个单选按钮,它本身位于更新面板中
//代码是这样的
`<asp:update panel ..>
...
<asp:Repeater>
..
<asp:checkbox>
..
..
</asp:update panel ..>
<asp:LinkButton ID="next2" runat="server" CssClass="button_Submit" Font-Bold="true" OnClick="next_ServerClick" Text="Submit">
<asp:ImageButton ID="next" ImageUrl="~/images/newSummary.jpg" runat="server" OnClick="next_ServerClick" ImageAlign="Middle"/>
protected void next_ServerClick(object sender, EventArgs e)
{
foreach (System.Web.UI.WebControls.RepeaterItem Item in repeatercontrol.Items)
{
chkbox = ((CheckBox)Item.FindControl(chkboxName));
if (chkbox.checked)
{
...
}
}
}`
我选择其中一个复选框,当我单击图像按钮时,我能够获得正确的状态(checked = true)。
但是当我使用链接按钮时,它总是以checked = false的形式出现,就像选择没有注册一样。
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:0)
您需要在更新面板中将linkbutton click事件注册为触发器。见下面的例子:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LinkButtonID" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
答案 1 :(得分:0)
在没有看到代码的情况下,控件不正确的唯一原因是,如果您在加载Page Life Cycle之前在ViewState中检查它们。
编辑: 使用单独的事件声明并集中查找逻辑:
protected void LinkButton1_Click(object sender, EventArgs e)
{
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
}