首先,我将描述网络表单布局:
表单包含一个带有“详细信息”按钮的GridView1,它打开第二个GridView2,其目的当然是显示从父GridView1中选择的项目的详细信息。所有控件都在服务器端代码隐藏中动态呈现。
挑战:
我需要创建一个模态弹出窗口,当用户单击GridView2中的图标作为TemplateField中的Image控件时,会显示该窗口。这样用户就可以在子GridView2中为细节添加注释。
我的方法:
我正试图在PreRender阶段将AJAXToolKit的模态弹出扩展器(ID =“mpe”)连接到TemplateField中的图标。由于TargetControlID不能为null或为空,我正在做的是创建一个虚拟Button控件并将模态弹出扩展器的TargetControlID属性设置为被调用的虚拟按钮的ID,然后在将TemplateField添加到GridView2之后,我将TargetControlID属性设置为图标的ID,即“icon_addComment”。
问题:
当我尝试将TargetControlID属性设置为图标的ID时,代码会抛出错误“'mpe'的TargetControlID无效。无法找到ID为'icon_addComment'的控件。”。我对如何使其正常工作感到难过,似乎无法绕过必须在模态弹出扩展器之前创建目标控件的条件。我想要的是让孩子GridView2图标的ID成为模态弹出扩展器的TargetControlID
答案 0 :(得分:1)
使用虚拟隐藏按钮作为模式弹出扩展器的目标控件ID,然后使用java-script显示/隐藏实际图标单击时的模态弹出窗口。例如,
<asp:ModalPopupExtender runat="server" ID="MyPopup" ... />
<script type="text/javascript" />
function showPopup() {
$find('<%= MyPopup.ClientID ').show();
}
function hidePopup() {
$find('<%= MyPopup.ClientID ').hide();
}
</script>
就个人而言,我不是ajax控件工具包的粉丝。对于此要求,我会使用jquery UI Dialog。