ASP.net中的Modal Popup Extender动画

时间:2011-06-01 22:16:10

标签: c# asp.net modalpopupextender animationextender

我目前正在开发一个ASP.net c#应用程序。我有一个网格视图,里面有链接按钮。当按下链接按钮时,我想在单击模态弹出窗口内的按钮时使用淡入动画和淡出动画显示模态弹出窗口。

我已将动画扩展器添加到代码中并将TargetControlID设置为链接按钮的ID,但是,当我尝试运行网站时,它会显示错误System.InvalidOperationException,ModalPopupExtender的TargetControID无效。找不到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>

感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

TargetControlID(据我所知)应该是弹出式面板本身的控件,而不是网格控件。当我使用ModalPopupExtender时,我通常使用带有'display:none'的asp:Button作为TargetControlID。例如,

<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。如果适用,您还将绑定所需的内容。

希望有所帮助。

答案 2 :(得分:1)

我试过但我的动画没有显示。 我将数据绑定添加到LinkBut​​ton:

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

我认为由于DetailView1的数据绑定,它需要从数据库中获取数据。如果DetailView1未绑定,则动画显示正常。