2012-02-17 85 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如果移動之外)。