使用asp.net 3.5 + ajax,网页如下
【按钮】       【UpdatePanel】Label(显示时间)【/UpdatePanel】点击按钮,无刷新修改Label的时间。当然,简化的很多内容,比如按钮区域,肯定不是一个按钮这么简单,但原理是一样的。本来呢容易处理的,就是为UpdatePanel添加一下异步触发器,设置为按钮的Click事件可是....问题来,按钮在一个UserControl中,对于UpdatePanel控件,根本找不到这个控件,即使后台代码找到这个按钮,用Triggers.Add()方法,也是提示该不到该控件有哪位大虾告诉我怎么办啊,千万别说将UpdatePanel把按钮也套上,因为钮区域内容很多,我要是连这部分都局部更新了,还不如提交整个网页更新的。绞尽脑汁,想不出好方法。

解决方案 »

  1.   

    忘了说明一点,按钮处有很多控件,有的点击更新Label,有的点击更新整个网页。所以如果要按钮处再套一个UpdatePanel,然后设置ChildrenAsTriggers=false 也达不到预期的效果
      

  2.   

    可以为UserControl建立一个Click事件,这样UpdatePanel就可以感知到用户控件有Click事件。
    详细可以参考一下http://blog.csdn.net/Leslies2/archive/2011/01/16/6144373.aspx
      

  3.   

    那没办法,只有把UserControl里面的控件也包含在另一个UpdatePanel里面了,因为你必须暴露UserControl里面的事件
      

  4.   

    Trigger事件处理更新Label不更简单?
      

  5.   

    客户端实际的clientID还和代码里的ID一样吗?
    在Page_Load加载的控件能持久吗
     <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Label ID="lbTime" runat="server"></asp:Label>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                </Triggers>
            </asp:UpdatePanel>
            &nbsp; &nbsp;
            <asp:Timer ID="Timer1" runat="server" Interval="3000" OnTick="Timer1_Tick">
            </asp:Timer>
    protected void Timer1_Tick(object sender, EventArgs e)
        {
            lbTime.Text = "";
        }