1

現在、ASP.net c# アプリケーションを開発しています。内部にリンク ボタンがバインドされたグリッド ビューがあります。リンクボタンが押されたときに、モーダルポップアップ内のボタンがクリックされたときにフェードインアニメーションとフェードアウトアニメーションを使用してモーダルポップアップを表示したい。

アニメーション エクステンダーをコードに追加し、TargetControlID をリンク ボタンの ID に設定しましたが、Web サイトを実行しようとすると、System.InvalidOperationException the TargetControID of ModalPopupExtender is not valid というエラーが表示されます。ID 'sofLink' のコントロールが見つかりませんでした。sofLink は LinkBut​​ton の ID です。

以下はグリッドビューのコードです

<asp:GridView ID="tblSoftware" runat="server" Width="100%"
                        EnableModelValidation="True" AutoGenerateColumns="False" 
                        onselectedindexchanged="tblSoftware_SelectedIndexChanged"
                        CellPadding="2">
                        <Columns>
                            <asp:TemplateField HeaderText="Software Name">
                                <ItemTemplate>
                                <asp:LinkButton ID="sofLink" Text='<%# Bind("sof_softwareName") %>' 
                                 CommandName="sofID" OnCommand="GetSoftwareModal" CommandArgument='<%# Eval("sof_id") %>' runat="server" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="sof_platform" HeaderText="Platform" ReadOnly="True" SortExpression="sof_platform" />
                        </Columns>
                        <HeaderStyle CssClass="gridHeader" />
                        <PagerSettings Position="Bottom" />
                        <PagerStyle HorizontalAlign="Right" VerticalAlign="Middle" CssClass="gridPage" />
                        <AlternatingRowStyle BackColor="White"></AlternatingRowStyle>
                    </asp:GridView>

以下は ModalPopupExtender のコードです

<ajaxToolkit:ModalPopupExtender ID="mpe" runat="server" TargetControlID="sofLink"
                    PopupControlID="ModalPanel" DropShadow="true" Drag="true" OkControlID="OKButton" />

               <asp:Panel ID="ModalPanel"  runat="server" Width="500px" style="width: auto; height: auto;" CssClass="modalPopup">
                    <asp:Label ID="softwareTitle" Font-Bold="true" Font-Size="Medium" runat="server" Width="100%" style="text-align: center;" /><br /><br />
                    <asp:Literal ID="litSoftware" runat="server"></asp:Literal>
                    <asp:Button id="OKButton" runat="server" Text="Close" style="position: relative; right: 0px; width: 100px;" />
               </asp:Panel>

               <asp:ScriptManager ID="asm" runat="server" />

そして、以下はアニメーションのコードです

       <ajaxToolkit:AnimationExtender ID="popupAnimation" runat="server"
            TargetControlID="sofLink">

            <Animations>
                <OnClick>
                    <Parallel AnimationTarget="ModalPanel"
                    Duration="0.3" Fps="25">
                    <FadeIn />
                    </Parallel>
                </OnClick>
            </Animations>
       </ajaxToolkit:AnimationExtender>

ご協力いただきありがとうございます。

4

3 に答える 3

1

試しましたが、アニメーションが表示されません。LinkBut​​tonにdatabindを追加します。

<asp:LinkButton ID="sofLink" runat="server" OnClientClick="javascript:document.getElementById('DetailView1').databind();document.getElementById('btnShowPopup').click();return false;">LinkButton</asp:LinkButton>

DetailView1のdatabindのため、データベースからデータを取得する必要があると思います。DetailView1がバインドされていない場合、アニメーションは正常に表示されます。

于 2012-02-02T10:42:38.123 に答える
1

非表示のボタンを使用して、その ID を ModalPopupExtender の TargetControlID として使用できます。

<asp:Button id="btnShowPopup" runat="server" style="display:none" />

次に、次の方法でポストバックなしでポップアップをすぐに表示する場合は、ボタンのクリック クライアント側を呼び出すことができます。

<asp:LinkButton ID="sofLink" runat="server" OnClientClick="javascript:document.getElementById('btnShowPopup').click();return false;">LinkButton</asp:LinkButton>
于 2011-06-01T22:39:53.027 に答える
1

(私の知る限り) TargetControlID は、グリッド コントロールではなく、ポップアップ パネル自体のコントロールである必要があります。ModalPopupExtender を使用するときは、通常、TargetControlID として「display:none」を指定した asp:Button を使用します。例えば、

<ajaxToolkit:ModalPopupExtender ID="mpe" runat="server" TargetControlID="btnPopup"
                PopupControlID="ModalPanel" DropShadow="true" Drag="true" OkControlID="OKButton" />
<asp:Panel ID="ModalPanel"  runat="server" Width="500px" style="width: auto; height: auto;" CssClass="modalPopup">
<asp:Button id="btnPopup" runat="server" style="display:none" />

コード ビハインドでは、GetSoftwareModal などのイベントに基づいてコントロールの表示と非表示を制御する必要があります。該当する場合は、必要なものをバインドすることもできます。

それが役立つことを願っています。

于 2011-06-01T22:47:26.287 に答える