【问题标题】:Button outside UpdatePanelUpdatePanel 外的按钮
【发布时间】:2014-04-14 19:43:25
【问题描述】:

这是我遇到问题的完整代码。

单击 but_OK 按钮后,UpdateProgress 面板不会显示。但是,如果我将“dmgConfirm”DIV 放在 UpdatePanel 、 UpdateProgress 面板中。如何使 UpdateProgress 面板显示将 But_OK 保持在 UpdatePanel 之外?

<%@ Page Title="Test Jquery" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="TestJquery.aspx.cs" Inherits="EluxDamageClaims.TestJquery"  %>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

 <asp:UpdateProgress ID="updProgress"
    AssociatedUpdatePanelID="UpdatePanel1"
    runat="server">
        <ProgressTemplate>           

    <div class ="divProgressBarBack" >
    </div>
      <div class ="divProgressBar">
           <img alt="progress" src="images/ajax_loading.gif"/>
           <h1> Processing...  </h1>
    </div>      
        </ProgressTemplate>
    </asp:UpdateProgress>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate >


        <asp:Button Text="Make Visible" ID ="btnMakeVisible" runat="server" OnClick="btnMakeVisible_Click" />
        <asp:Panel runat="server" ID="pnl" Visible ="false" >

对话框

<!-- ui-dialog -->

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。

 <input id="hbtnConfirm" type="button" value="Submit" onclick="openModalDiv('dmgConfirm');" />


            </asp:Panel>

 <div id="dmgConfirm" title="Damage Claim Confirm " >
        <b> Please confirm your submission ?. You cannot undo this operation.</b><br /><br />

       <table>
           <tr> <td><asp:Button ID="but_OK"  runat="server" Text="Confirm" OnClick="but_OK_Click"  />   </td>
               <td> <input id="Button2" type="button" value="Cancel" onclick="javascript: closeModalDiv('dmgConfirm');" /></td>
           </tr>
       </table>
    <br />
     </div> 
</asp:Content> 

【问题讨论】:

  • 记住一个按钮会触发一个回发,所以你可能想使用一些客户端javascript,你的更新面板UpdateMode设置为什么?我会在您的 aspx 文件或代码中将其设置为 UpdateMode="Conditional",也调用/问题和显式 UpdatePanel.UpDate();
  • 能否举个例子。

标签: c# jquery asp.net ajax updatepanel


【解决方案1】:

您将不得不提及按钮的触发器 - 让它甚至位于页面中的任何位置 - 它仍然会触发 UpdteProgress 面板内容。

<asp:UpdatePanel>
........
........
<Triggers> <asp:AsyncPostBackTrigger ControlID="but_OK" EventName="Click" /> 
</Triggers> 
</asp:UpdatePanel>

【讨论】:

  • 我已经设置好了。不知道为什么我在上面粘贴时它不复制该代码。它还将触发...回发并在后台执行所需的任务。但它不显示进度指示器
  • 尝试在 PageLoad 中添加一些延迟(暂时仅用于测试目的).. System.Threading.Thread.Sleep(5000); (睡一秒)
【解决方案2】:

发布工作代码 FYR(点击“确认”)

ASPX:

 <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <asp:UpdateProgress ID="updProgress"
        AssociatedUpdatePanelID="UpdatePanel1" 
        runat="server">
        <ProgressTemplate>
            <div class="divProgressBarBack">
            </div>
            <div class="divProgressBar">
                //<img alt="progress" src="images/ajax_loading.gif" />
                <h1>Processing...  </h1>
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>


            <asp:Button Text="Make Visible" ID="btnMakeVisible" runat="server"  />
            <asp:Panel runat="server" ID="pnl" Visible="false">
                <input id="hbtnConfirm" type="button" value="Submit onclick="openModalDiv('dmgConfirm');" />


            </asp:Panel>
            <div id="dmgConfirm" title="Damage Claim Confirm ">
                <b>Please confirm your submission ?. You cannot undo this operation.</b><br />
                <br />

                <table>
                    <tr>
                        <td>

                        </td>
                        <td>
                            <input id="Button2" type="button" value="Cancel" onclick="javascript: closeModalDiv('dmgConfirm');" /></td>
                    </tr>
                </table>
                <br />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
<asp:Button ID="but_OK" runat="server" Text="Confirm" OnClick="but_OK_Click"  />
</asp:Content>

代码背后:

    protected void but_OK_Click(object sender, EventArgs e)
    {
        UpdatePanel1.Update();

    }

【讨论】:

  • UpdateProgress 控件仅不适用于由 UpdatePanel 的外部触发器引起的回发。这是通过此属性 AssociatedUpdatePanelID 设计的。启用 UpdateProgress 控件的实现是通过在控件层次结构中移动来完成的UpdatePanel 控件通过 AssociatedUpdatePanelID 标识,以查找导致实际回发的控件的匹配项。由于外部触发器不会出现在层次结构中,因此不会启用 UpdateProgress。 codedigest.com/Articles/ASPNETAJAX/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
相关资源
最近更新 更多