GridView中Modal Popup Extender的解决方案

时间:2012-06-02 14:21:31

标签: asp.net modalpopupextender

当用户在GridView中单击LinkBut​​ton时,我正在尝试显示Modal Popup。    我为测试设置了一个断点但是当我点击Gridview中的Linkbutton时它似乎没有通过ModalPopupExtender.Show()事件。

protected void lnkItemName_Click(object sender, EventArgs e)
{<---Break Point
     ModalPopupExtender.Show();
}

   <asp:GridView ID="grvItem" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSourceItem" onrowdatabound="grvItem_RowDataBound" 
        DataKeyNames="ID">                                   
        <Columns>                  
            <asp:TemplateField >                                                        
                <ItemStyle Font-Size="10" />
                <HeaderTemplate>
                    ITEM
                </HeaderTemplate>
                <ItemStyle Wrap="True" />
                <ItemTemplate>                                           
                    <asp:LinkButton ID="lnkItemName" runat="server" Text='<%# Eval("NAME") %>' CssClass="h7" Width="100" OnClick="lnkItemName_Click"></asp:LinkButton>
                    <asp:Panel ID="pnlItem" runat="server" Style="display: none" Width="400px" Height="400px" BackColor="White">
                        <div style="float: right;">
                            <asp:LinkButton ID="lnkClose" runat="server">Close</asp:LinkButton>
                        </div>
                        <asp:TextBox ID="txt" runat="server">asdf</asp:TextBox>
                    </asp:Panel>
                    <asp:ModalPopupExtender ID="extPerson" runat="server" TargetControlID="lnkItemName"
                        PopupControlID="pnlItem" DropShadow="true" CancelControlID="lnkClose" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView> 

2 个答案:

答案 0 :(得分:1)

“lnkItemName”是“extPerson”的TargetControlID,因此“lnkItemName_Click”根本不被调用 - 而是由ModalPopupExtender处理,“pnlItem”自动显示。如果你愿意,你可以删除TargetControlID属性,然后在服务器上调用“lnkItemName_Click”,这样你就可以手动显示“pnlItem” - 但是,你首先要以某种方式找到它右键“extPerson”控件(每行有一个),将其转换为ModalPopupExtender,然后在其上调用Show()。

长话短说,只需简单地删除OnClick事件,它的用途 - 如果Modal Popup没有显示它现在的方式,那么其他错误。

答案 1 :(得分:0)

这样做:

<ajaxToolkit:ModalPopupExtender runat="server" ID="mdlImageDetails" TargetControlID="mdConfirmbtn"
        PopupControlID="modelDiv" BackgroundCssClass="modalBackground" >
    </ajaxToolkit:ModalPopupExtender>
    <asp:Button runat="server" ID="mdConfirmbtn" Style="display: none;" />

然后在代码中,您可以通过调用.show().hide()方法手动控制ModalPopUp。