如何通过GridView中的控件在ModalPopupExtender中设置TargetContrlID

问题描述 投票:7回答:2

如何将TragetContriID设置为HyperLink内部的GridView

我尝试过这个:

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

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

asp.net gridview ajaxcontroltoolkit modalpopupextender
2个回答
8
投票

设置TargetControlIDModalPopupExtender基本上会在单击控件时触发该ModalPopup的客户端Show功能。因此,您需要自己连接控件。

首先,由于ModalPopupExtender需要一个TargetControlID,因此您应该添加一个虚拟控件以将模式弹出窗口链接到:

<asp:Button runat="server" 
            ID="HiddenTargetControlForModalPopup" 
            style="display:none"/> 

并将ModalPopupExtender TargetControlID链接到它

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

因此ModalPopupExtender现在有了一个不执行任何操作的目标。现在,我们需要完成目标的工作。您需要一个JavaScript函数才能从客户端显示ModalPopup。

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

     function ShowModalPopup() {
         //  show the Popup     
         $find(ModalPopup).show();
     }
</script>   

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

<asp:LinkButton ID="LinkButton1" runat="server" 
                OnClientClick="ShowModalPopup()" />

0
投票

完美的解决方法,为我工作

© www.soinside.com 2019 - 2024. All rights reserved.