在asp.net的UpdatePanel中更新图像URL

|| 我有一个GridView,其中有一个UpdatePanel。我正在尝试通过使用AJAX ASyncFileUpload更新asp:image的I * mage URL *。过去两天来,我一直在Google上寻找解决方案。 这是代码: 更新面板:
<asp:UpdatePanel ID=\"pnlInfo\" runat=\"server\" Font-Names=\"Times New Roman\" UpdateMode=\"Always\" EnableViewState=\"true\" 
                                style=\"display:none; background-color:#FFFFFF; padding:20px; margin:50px; border:3px solid #4B0303; color:Black; 
                                width:inherit;\" 
                                >
                                <ContentTemplate>
                                <div runat=\"server\" class=\"divTable\" style=\"width:inherit;\">

                                    <div runat=\"server\" class=\"divRow\" style=\"text-align:center; width:300px; float:left;\">
                                        <asp:Image ID=\"imgUser\" runat=\"server\" ImageAlign=\"Middle\" ImageUrl=\"~/silhouette.jpg\"
                                             Width=\"100px\" Height=\"100px\" EnableViewState=\"true\"/>
                                        <asp:ModalPopupExtender ID=\"ModalPopupEUpload\" runat=\"server\" 
                                            CancelControlID=\"btnClosePnl\" OnCancelScript=\"HideModalPopup()\"
                                            TargetControlID=\"imgUser\" PopupControlID=\"pnlUploadImage\" Drag=\"True\" 
                                            BackgroundCssClass=\"ModalPopupBg\" DynamicServicePath=\"\" Enabled=\"True\"  />
                                        <asp:Panel ID=\"pnlUploadImage\" runat=\"server\" Font-Names=\"Times New Roman\" 
                                            style=\"display:none; background-color:#FFFFFF; padding:20px; 
                                            margin:50px; border:3px solid #4B0303; color:Black; width:inherit;\" 
                                            >
                                                <asp:AsyncFileUpload ID=\"AsyncFileUpload\" runat=\"server\" OnUploadedComplete=\"OnUpdateComplete\"/>
                                                <asp:Button ID=\"btnClosePnl\" runat=\"server\" Text=\"Close\"/>
                                                <asp:Button ID=\"btnUpdate\" runat=\"server\" OnClick=\"OnUpdateComplete\" Visible=\"false\"  />
                                        </asp:Panel></div>

//more code
</div>
                                </ContentTemplate>
                                <Triggers>
                                    <asp:AsyncPostBackTrigger ControlID=\"AsyncFileUpload\" EventName=\"UploadedComplete\" />
                                </Triggers>
                            </asp:UpdatePanel></div>
更新面板是ModalPopupExtender的一部分,pnlUploadImage也是如此。这些工作正常。 GridView也可以正常工作。 后台代码:
protected void OnUpdateComplete(object sender, EventArgs e)
        {
            Image ImgUser = new Image();
            AsyncFileUpload asyncSender = new AsyncFileUpload();
            AsyncFileUpload asyncGv = new AsyncFileUpload();

            //finding the row of the sender
            asyncSender = (AsyncFileUpload)sender;

            foreach (GridViewRow Row in gvData.Rows)
            {
                asyncGv = (AsyncFileUpload)Row.Cells[0].FindControl(\"AsyncFileUpload\");
                if (asyncSender.ClientID == asyncGv.ClientID)
                {
                    ImgUser = (Image)Row.Cells[0].FindControl(\"imgUser\");
                    ImgUser.ImageUrl = asyncSender.FileName;
                    break;
                }
            }
        }
btnUpdate是一个可能无法解决的解决方案。基本上,当我单击Image时,AsyncFileUpload以弹出格式弹出。然后,我选择一张图片并上传。我在UploadComplete上触发了更新,该更新假定是要更改图像URL。 问题是,即使经过了UploadComplete,我看到的图像(silhouette.jpg)仍然停留在该位置。当我逐步执行操作时,我看到ImageURL正在更改。我检查了一下,这是在功能中选择的正确图像。 总体而言,为什么这样做,甚至以为BackURL中的ImageURL被更改了,我在浏览器中看到的图像也没有更改。     
已邀请:
我必须创建一个带有方法单击的asp:button,其中包含一个JavaScript回发。然后,我在刚刚创建的按钮的更新面板中创建了一个asynchPostBack触发器。它强制执行回发,但这是自动更新图片的唯一方法。     
尝试将
pnlInfo.Update()
加到
OnUpdateComplete()
的末尾     

要回复问题请先登录注册