UpdatePanelがあるGridViewがあります。AJAX ASyncFileUploadを使用して、asp:imageのI * mageURL*を更新しようとしています。私は過去2日間、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は、機能しなくなった可能性のあるソリューションでした。基本的に、画像をクリックすると、AsyncFileUploadがポップアップ形式でポップアップ表示されます。次に、画像を選択してアップロードします。画像のURLを変更することを想定したUploadCompleteで更新をトリガーします。
問題は、UploadCompleteを通過した後でも、表示される画像( silhouette.jpg)がそこにとどまるということです。ステップバイステップで実行すると、 ImageURLが変更されていることがわかります。チェックしたところ、関数で選択されているのは正しい画像です。
全体として、バックコードでImageURLが変更されているにもかかわらず、ブラウザーに表示される画像が変更されないのはなぜですか。