Gridview弹出窗口未打开,从行命令事件对应Linkbutton点击

本文关键字:事件 命令 点击 Linkbutton 窗口 Gridview | 更新日期: 2023-09-27 18:15:34

我在Gridview TemplateField中有Linkbutton。我想重定向到另一个页面在一个弹出自定义大小窗口从RowCommand事件。

注意:这里我不想调用LinkButton的OnClientScript属性来打开javascript弹出自定义大小窗口。我想保存Gridrow到会话对象,并从服务器端代码打开窗口。

代码如下:

<ItemTemplate>
    <itemstyle width="5%" />
    <asp:LinkButton CssClass="l_link" ID="lnkView" runat="server"  
      DataTextField="overWriteType" 
      CommandName="overWriteType"
      CommandArgument='<%# Eval("overWriteType") %>'
      Text='<%# Eval("overWriteType") %>'></asp:LinkButton>
</ItemTemplate>
protected void gvKeys_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "overWriteType")
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("&lt;script language='javascript'>");
        sb.Append("window.open('OverwriteConfiguration.aspx', 'PopUp',");
        sb.Append("'top=0, left=0, width=500, height=500, menubar=no,toolbar=no,status,resizable=yes,addressbar=no');<");
        sb.Append("/script>");
        ScriptManager.RegisterStartupScript(Page, GetType(), "OpenWindow", sb.ToString(), true);
    }
}

上面的代码没有打开任何窗口

Gridview弹出窗口未打开,从行命令事件对应Linkbutton点击

在这种情况下,你不想使用RegisterStartupScript,你想为你的按钮添加一个onclick处理程序,你想在RowDataBound中完成它:

protected void gvKeys_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append("window.open('OverwriteConfiguration.aspx', 'PopUp',");
    sb.Append("'top=0, left=0, width=500, height=500, menubar=no,toolbar=no,status,resizable=yes,addressbar=no');<");
    LinkButton l = (LinkButton)e.Row.FindControl("lnkView");
    l.Attributes.Add("onclick", sb.ToString());
   }
}