如何使用GridView中的控件在ModalPopupExtender中设置TargetContrlID

Fat*_*h M 7 asp.net gridview modalpopupextender ajaxcontroltoolkit

如何设置TragetContriID一个HyperLink是内部的GridView

我试过这个:

<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
                        PopupControlID="Panel1" 
                        CancelControlID="btnCancel" 
                        OnCancelScript="HideModalPopup()"
                        TargetControlID="GridView1$HyperLink1">
</asp:ModalPopupExtender>
Run Code Online (Sandbox Code Playgroud)

但我有一个错误:没有 GridView1$HyperLink1

Dav*_*b60 8

设置TargetControlIDModalPopupExtender基本触发ModalPopup的客户端播放功能,单击控件时.所以你需要自己连接控件.

首先,由于ModalPopupExtender需要a TargetControlID,你应该添加一个虚拟控件来将模态弹出窗口链接到:

<asp:Button runat="server" 
            ID="HiddenTargetControlForModalPopup" 
            style="display:none"/> 
Run Code Online (Sandbox Code Playgroud)

并链接ModalPopupExtender TargetControlID到它

<asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
                        PopupControlID="Panel1" 
                        CancelControlID="btnCancel" 
                        OnCancelScript="HideModalPopup()"  
                        TargetControlID="HiddenTargetControlForModalPopup">
</asp:ModalPopupExtender>
Run Code Online (Sandbox Code Playgroud)

所以ModalPopupExtender现在有一个什么都不做的目标.现在我们现在需要做目标的工作.您需要一个javascript函数来显示客户端的ModalPopup.

<script type="text/javascript">
     var ModalPopup='<%= ModalPopupExtender1.ClientID %>';

     function ShowModalPopup() {
         //  show the Popup     
         $find(ModalPopup).show();
     }
</script>   
Run Code Online (Sandbox Code Playgroud)

然后你应该将你OnClientClick的控件事件映射gridview到这个javascript函数.从您的代码中,我看到您使用了a asp:HyperLink,我认为它不支持该OnClientClick事件,因此您可能需要将其切换为asp:LinkButton.

<asp:LinkButton ID="LinkButton1" runat="server" 
                OnClientClick="ShowModalPopup()" />
Run Code Online (Sandbox Code Playgroud)