updatepanel.update()似乎没有从代码隐藏中触发

时间:2011-08-24 15:42:18

标签: c# asp.net updatepanel

我有一个updatepanel,我更改了内容,然后调用updatepanel.update()来异步更新页面的那一部分,但它似乎没有从代码隐藏中激活update()(即Async Post Back不会发生,也不会显示更新的内容。

以下scriptmanager位于MasterPage中:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true" ></asp:ToolkitScriptManager>

相关网页包含以下更新面板:

<asp:UpdatePanel ID="upImageConfirm" runat="server" UpdateMode="always">
    <ContentTemplate>
        <div id="imageContainer">
            <asp:label ID="lblCheckPackshot" runat="server" Text="None" />
            <asp:button ID="btnLoadPackshot" runat="server" OnClick="uploadPackShot" Text="Upload &raquo;" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

以下代码隐藏在文件上传完成时启动并运行(检查调试此代码是否运行并确实更改了值,但更新未被触发:

protected void uploadComplete(object sender, jaxControlToolkit.AsyncFileUploadEventArgs e)
{
try
{
            //upload file to web file system
            if (afuStockImport.HasFile)
            {
                string strPath = Server.MapPath("~/graphics/holding/") + Path.GetFileName(afuStockImport.PostedFile.FileName);
                Session["uploadedFileName"] = afuStockImport.PostedFile.FileName;
                afuStockImport.SaveAs(strPath);

                //Show on page for confirmation
                lblCheckPackshot.Text = "<img src=\"/graphics/holding/" + Path.GetFileName(afuStockImport.PostedFile.FileName) + "\" />";
                upImageConfirm.Update();
            }
        }
}

谢谢!

2 个答案:

答案 0 :(得分:1)

这是来自ASP.NET AJAX Toolkit的AsyncFileUpload的行为。问题是AsyncFileUpload使用iframe来处理异步上传,因此引发uploadComplete事件和客户端页面的“页面”没有像往常一样链接。

解决方法是使用OnClientUploadComplete事件使用javascript触发asyncpostback,然后更新您的updatepanel。还有很多其他方法,some are not using an update panel

答案 1 :(得分:0)

从技术上讲,您无法进行异步文件上传。存在的实现都是变通方法...隐藏的IFrame,TextAreas ......等

Why don't file uploads work during async postbacks?