updatepanel中继器中的linkbutton,使用RegisterClientScriptBlock生成新窗口

本文关键字:新窗口 窗口 RegisterClientScriptBlock 中继器 linkbutton 使用 updatepanel | 更新日期: 2023-09-27 17:57:12

我有一个奇怪的情况。

我在更新面板中有一个中继器。转发器有一个链接按钮,它生成一个新窗口 - 或者更确切地说,它应该生成一个新窗口。当中继器位于更新面板之外时,它工作正常;现在没有了。

我尝试将中继器设置为AsyncPostBack触发器,但没有运气:

          <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="rptEmployees" />
                   <asp:AsyncPostBackTrigger ControlID="imgClear" />
                </Triggers>

我尝试将Linkbutton作为ItemDataBound上的AsyncPBtrigger,但没有运气:

    LinkButton lb = (LinkButton)e.Item.FindControl("lbtnVcard");
          sm1.RegisterAsyncPostBackControl(lb);

当我将链接按钮设置为后退触发器时,弹出窗口出现一次。任何后续我点击其中一个链接按钮(直到我进行硬刷新)时,不会出现弹出窗口,尽管中继器的 ItemCommand 总是被点击:

   ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>var" +
                                                                  @"  win=window.open('vCard.aspx',null,'width=50,height=50," +
                                                                  @"top=100,left=100','true');</script>", false);

最后,这是我的项模板:

  <ItemTemplate>
                            <!--For IE9 there can be no whitespace -->
                            <tr>
                                <td width="140"><strong><%# Eval("DisplayName") %></strong><asp:HiddenField runat="server" ID="HFname" Value='<%# Eval("SamAccountName") %>'/></td>
                                <td width="100"><%# Eval("Office") %></td>
                                <td width="120"><%# Eval("WorkPhone") %></td>
                                <td width="120"><%# Eval("MobilePhone") %></td>
                                <td width="300" style="text-align: left"><a href="mailto:<%# Eval("EmailAddress") %>"><%# Eval("EmailAddress") %></a></td>
                                <td><div class="button"><asp:LinkButton CommandName="vCard" runat="server" ID="lbtnVcard" Text="vCard" CssClass="button"/></div></td>
                            </tr>

                        </ItemTemplate>

任何线索/想法??

谢谢。

更新:仍然是一个问题,因为我需要点击服务器才能将一些数据加载到内存中。

updatepanel中继器中的linkbutton,使用RegisterClientScriptBlock生成新窗口

在页面上定义用于打开窗口的 js

<script type="text/javascript">
 function OpenWin(){
window.open('vCard.aspx',null,'width=50,height=50,top=100,left=100','true');
}
</script>

修改项模板以指向它。

  <ItemTemplate>
                            <!--For IE9 there can be no whitespace -->
                            <tr>
                                <td width="140"><strong><%# Eval("DisplayName") %></strong><asp:HiddenField runat="server" ID="HFname" Value='<%# Eval("SamAccountName") %>'/></td>
                                <td width="100"><%# Eval("Office") %></td>
                                <td width="120"><%# Eval("WorkPhone") %></td>
                                <td width="120"><%# Eval("MobilePhone") %></td>
                                <td width="300" style="text-align: left"><a href="mailto:<%# Eval("EmailAddress") %>"><%# Eval("EmailAddress") %></a></td>
                                <td><div class="button"><asp:LinkButton CommandName="vCard" runat="server" ID="lbtnVcard" Text="vCard" CssClass="button" OnClientClick="OpenWin()"/></div></td>
                            </tr>

                        </ItemTemplate>

您现在可以删除连接到按钮的 js,只是为了查看行为是否发生变化。