我有一个更新面板,里面有更新进度。我已经在更新面板外移动了按钮,因为当我在更新面板中有按钮时,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 :(得分:2)
使用触发器进行更新面板
<asp:UpdatePanel>
.... content ...
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_upload" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
答案 1 :(得分:0)
1。)Response.Write
在设计UpdatePanel
内不起作用(请参阅原因:https://stackoverflow.com/a/3878111/1288619) - 默认情况下UpdatePanel
由其所有子项自动触发控件。
2。)当您将按钮放在它之外时,您将触发完整的回发而不是UpdatePanel
的部分渲染 - 因此没有更新进度。
如果您只是将按钮注册为AsyncPostBackTrigger
(无论在哪里) - 您将获得与第一种情况完全相同的情况。
如果您将按钮注册为(完整)PostBackTrigger
,或将UpdatePanel
的渲染设置为有条件而不是由其子项触发 - 那么您只需获得与第二种情况。
所以,就像alexsuslin建议的那样,只需将Literal
内部某些UpdatePanel
控件的text属性更改为Response.Write
中的内容(并将按钮的visible属性设置为false,如果你不想再显示它 - 但如果移到外面,请将它注册为AsyncPostBackTrigger
。