如何从 GridView 在新选项卡中打开页面?

How to open page in new tab from GridView?

我想在单击 gridview link 按钮时在新选项卡中打开页面。但我想根据警报类型打开新页面。例如,从下面给出的网格中,我单击了 Alert1 的 link 按钮,然后它应该打开 alert1.aspx 页面,如果是 Alert2,则 alert2.aspx。 ETC 帮助我找到合适的解决方案。谢谢。

网格视图:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowHeader="False"> 
    <Columns>
    <asp:TemplateField HeaderText="Alert Type" SortExpression="Alert_Type">
    <EditItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Eval("Alert_Type") %>'>
    </asp:Label>
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Alert_Type") %>'>
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="Created_Time" HeaderText="Created Time" 
    ReadOnly="True" SortExpression="Created_Time" />
    <asp:TemplateField >
    <ItemTemplate>
    <asp:LinkButton ID="lnk" runat="server" Text="Click" OnClick="lnk_Click">
    </asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>                
 </asp:GridView>

C#:

protected void lnk_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open('alert1.aspx','_newtab');", true);
}

您需要将 target 属性设置为 _blank

Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open('alert1.aspx','_blank');", true);

window.open中的第二个参数是指定您要在新选项卡中还是在现有选项卡中打开页面。所以你需要将它设置为 _blank 以在新标签中打开页面

'_newtab'替换为'_blank'

Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open('alert1.aspx','_blank');", true);

这是您正在寻找的解决方案:

 protected void lnk_Click(object sender, EventArgs e)
 {
      LinkButton lnk = sender as LinkButton;
      Label Label1 = lnk.NamingContainer.FindControl("Label1") as Label;

      if (Label1.Text == "Alert1")
      {
          Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open('alert1.aspx','_blank');", true);
      }
      else if (Label1.Text == "Alert2")
      {
          Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open('alert2.aspx','_blank');", true);
      }
 }

此外,为 GridView 中的控件指定唯一的名称。

将 CommandName 设置为警报类型并在点击事件中访问它

 <asp:LinkButton ID="lnk" runat="server" Text="Click" OnClick="lnk_Click" CommandArgument='<%# Bind("Alert_Type") %>'>
</asp:LinkButton>

点击事件

protected void lnk_Click(object sender, EventArgs e)
{
string alerttype=e.CommandArgument.ToString();
Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", "window.open("+alerttype+"'.aspx','_newtab');", true);
}