【问题标题】:Refresh only an UpdatePanel inside another UpdatePanel仅刷新另一个 UpdatePanel 中的一个 UpdatePanel
【发布时间】:2012-08-07 10:25:19
【问题描述】:

如果在另一个UpdatePanel里面有UpdatePanel,并且在里面的UpdatePanel里面有一个按钮,我想点击这个按钮的时候,只刷新里面的UpdatePanel。怎么样?

【问题讨论】:

    标签: asp.net vb.net updatepanel


    【解决方案1】:

    在innerupdate 面板中,将updatemode 设置为有条件的,并将outerupdatepanel childrenastriggers 属性设置为false。在内部更新面板中添加一个回发触发器并将其设置为将导致回发的按钮。像这样的

      <asp:UpdatePanel ID="parentup" runat="server" ChildrenAsTriggers="false">
        <ContentTemplate>
            <asp:UpdatePanel ID="chidlup" UpdateMode="Conditional" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btn" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:PostBackTrigger ControlID="btn" />
                </Triggers>
            </asp:UpdatePanel>
        </ContentTemplate>
    </asp:UpdatePanel>
    

    【讨论】:

      【解决方案2】:

      @Waqar Janjua 是对的。

      但您不必将 ChildrenAsTriggers 设置为 false,有时将其设置为 true 会更方便。

      在两个更新面板中设置属性 UpdateMode="Conditional"(将 ChildrenAsTriggers 保留为其默认值 true)。然后在之间:将触发器添加到您的按钮,如 Janjua 所说:

      <Triggers>
          <asp:AsyncPostBackTrigger ControlID="btn" />
      </Triggers>
      

      当 UpdateMode 不是条件时,每个更新面板都会更新它。

      【讨论】:

        【解决方案3】:

        这段代码可以帮助你:这里是Source

         <asp:ScriptManager ID="script1" runat="server"></asp:ScriptManager>
                <asp:UpdatePanel ID="up1" runat="server">
                    <ContentTemplate>
                        <asp:Label ID="lblTime" runat="server" ForeColor="Red"></asp:Label>
                        <asp:Button ID="buttonOuter" runat="server" OnClick="buttonOuter_Click" Text="What is the time?" />
                        <asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:Label ID="lblTime2" runat="server" ForeColor="Blue"></asp:Label>
                                <asp:Button ID="buttonInner" runat="server" OnClick="buttonInner_Click" Text="What is the time?" />
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger  ControlID="buttonOuter" EventName="Click"/>
                    </Triggers>
                </asp:UpdatePanel>
        

        这里是code behinde

         protected void Page_Load(object sender, EventArgs e)
        {
        
        }
        protected void buttonInner_Click(object sender, EventArgs e)
        {
            up2.Update();
            lblTime2.Text = DateTime.Now.Second.ToString();
        }
        protected void buttonOuter_Click(object sender, EventArgs e)
        {
            lblTime.Text = DateTime.Now.Second.ToString();
        }
        

        【讨论】:

          【解决方案4】:

          如果 UP1 是外部 UpdatePanel ,而 UP2 是内部,并且您想防止外部被内部的 Button 更新(for exp:Btn):

          UP1.UpdateMode="Conditional"
          UP1.ChildrenAsTriggers= "False"
          

          您也不应该在 UP1 中添加 Btn 作为触发器(如以下代码)

          <asp:UpdatePanel ID="UP1" runat="server" ....>
             <ContentTemplate>
              ....
             </ContentTemplate>
            <Triggers>
             <asp:Trigger ControlID="btn" EventName="Click"/>
            </Triggers>
          </asp:UpdatePanel>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-04
            • 1970-01-01
            • 2011-08-06
            • 2011-12-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多