1

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

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

您可以使用隐藏按钮并将其 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 时,我通常使用带有 '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。如果适用,您还将绑定您需要的内容。

希望有帮助。

于 2011-06-01T22:47:26.287 回答
1

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

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

I think because of databind of DetailView1, it need get data from database. If DetailView1 doesn't bind, the animation display normal.

于 2012-02-02T10:42:38.123 回答