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

本文关键字:更新 图像 url UpdatePanel asp net | 更新日期: 2023-09-27 17:50:12

我有一个GridView其中我有一个UpdatePanel。我试图通过使用AJAX ASyncFileUpload更新我的asp:image的I*图像URL*。在过去的两天里,我一直在谷歌上搜索解决方案。

代码如下:

更新面板:

<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是一个可能的解决方案,最终不工作。基本上,当我点击图像,AsyncFileUpload弹出的格式弹出。然后我选择一张图片并上传。我触发UploadComplete上的更新,它应该改变图像URL。

问题是,我看到的图像(silhouette.jpg)留在那里,即使经过UploadComplete。当我一步一步地执行时,我看到ImageURL正在被更改。我检查了一下,它是在函数中被选择的正确图像。

总的来说,为什么,即使ImageURL在后台代码中被改变了,我在浏览器上看到的图像也没有改变。

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

我必须创建一个asp:按钮,其中包含一个javascript回发的方法click。然后,我在刚刚创建的按钮的更新面板上创建了一个asynchPostBack触发器。它强制回发,但这是自动更新图片的唯一方法。

尝试将pnlInfo.Update()添加到OnUpdateComplete()的末尾