radiobutton检查asp:linkbutton postback上的状态

时间:2009-10-14 16:50:00

标签: asp.net asp.net-2.0

我在转发器控件中有四个单选按钮,它本身位于更新面板中

//代码是这样的

`<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的形式出现,就像选择没有注册一样。

关于为什么会发生这种情况的任何想法?

2 个答案:

答案 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)
    {

    }