3

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が変更されているにもかかわらず、ブラウザーに表示される画像が変更されないのはなぜですか。

4

2 に答える 2

2

javascriptのポストバックを含むメソッドclickを使用してasp:buttonを作成する必要がありました。次に、作成したボタンの更新パネルでasynchPostBackトリガーを作成しました。ポストバックを強制しますが、画像を自動的に更新する唯一の方法です。

于 2011-06-28T19:10:04.357 に答える
0

pnlInfo.Update()の最後に追加してみてくださいOnUpdateComplete()

于 2011-04-13T20:32:39.313 に答える