2012-02-17 70 views
0

我有一个更新面板和更新进度。我提出该按钮外部更新面板,因为,当我有更新面板内的按钮的Response.Write是行不通的。现在移动的Response.Write外的按钮后,是工作,但更新的进展不大。当我有外面的按钮时,如何使它工作。如何使用更新面板内更新进度,当执行代码的按钮位于更新面板外

<asp:UpdateProgress ID="UpdateProgress2" runat="server">  
<ProgressTemplate>  
    <div style="width: 338px; position: relative; top: -420px; left: 80px" class="">   <b>Please Wait...</b>   
    <img runat="server" id="ajaxLoader" style="background-color: White; width: 338px;"         src="styles/images/loadImage.gif" alt="loading" />  
    </div>   </ProgressTemplate>   </asp:UpdateProgress>    
     </ContentTemplate>  </asp:UpdatePanel>  
     <asp:Button ID="btn_upload" runat="server" Text="Upload"        OnClick="upload_Click" /> 
+0

当我添加触发response.write不起作用 – Murthy 2012-02-17 13:19:20

+0

不要忘记接受一个答案,如果它帮助你,作为对其他人的基本礼貌... – 2012-06-06 09:17:41

回答

2

为您更新面板使用触发器

<asp:UpdatePanel> 

.... content ... 

    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btn_upload" EventName="Click" /> 
    </Triggers> 
</asp:UpdatePanel> 
+0

当我添加触发response.write不工作 – Murthy 2012-02-17 13:19:28

+0

你不想使用response.write ...事实上,我不知道确切的情况,如果你写下你将要存档的内容,我会尽力帮助你。可能你将repsonse.write移动到代码后面并使用asp:Label并更改Text属性... – alexsuslin 2012-02-17 13:21:54

0

1)Response.Write并不里面UpdatePanel设计工作(见为什么在这里:https://stackoverflow.com/a/3878111/1288619) - 和默认UpdatePanel由所有的自动触发其儿童控制。

2.)当你把按钮放在它外面时,你正在触发完整的回发而不是UpdatePanel的局部渲染 - 所以没有更新进度。

当您只需将该按钮注册为AsyncPostBackTrigger(即可能)时,您将获得与第一种情况完全相同的情况。

如果您将该按钮注册为(Full)PostBackTrigger,或将UpdatePanel的渲染设置为有条件且未由其子项触发 - 则您将获得与第二种情况完全相同的情况。

所以,不要为alexsuslin建议,只需更改内部UpdatePanel一些Literal控制,你会放什么Response.Write的Text属性(和按钮的Visible属性设置为false,如果你不下去了显示想要的 - 但这样做其注册为AsyncPostBackTrigger如果移动之外)。