ASP.Net AJAX模式弹出窗口

时间:2011-10-24 04:23:55

标签: asp.net ajax web-applications

首先,我将描述网络表单布局:

表单包含一个带有“详细信息”按钮的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

1 个答案:

答案 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