【发布时间】:2018-07-10 06:12:18
【问题描述】:
我在 gridview 项目模板中有一个链接按钮,我正在尝试以下方法在新选项卡中打开,但它不起作用。
HTML:
<asp:TemplateField HeaderText="ID">
<ItemStyle HorizontalAlign="Right" />
<ItemTemplate>
<asp:LinkButton ID="lnkbtnID" runat="server"
CommandArgument='<%# Eval("ID") %>' Font-Underline="true"
OnCommand="lnkbtnID_Click" ForeColor="Black"
Text='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
CS:
protected void lnkbtnID_Click(Object sender, CommandEventArgs e)
{
try
{
if (e.CommandArgument != null)
{
if (e.CommandArgument != null)
{
GridViewRow gvr = (GridViewRow)(sender as LinkButton).NamingContainer;
string strID = ((LinkButton)gvr.FindControl("lnkID")).Text;
string strItemID = ItemDAL.GetItemID(strID, "Metal");
string strURL = "~/ASP/Price.aspx?=" + strItemID;
Response.Redirect(strURL);
}
}
}
catch (Exception Ex)
{
}
}
我尝试在 html 控件中添加OnClientClick="aspnetForm.target ='_blank';",但没有帮助。
谁能建议如何做到这一点。
【问题讨论】:
-
尝试在 GridView 中设置此代码
RowDataBound事件:var lb = (LinkButton)gvr.FindControl("lnkID")然后lb.Attributes.Add("href","~/path/to/target.aspx")&lb.Attributes.Add("target","_blank"),或使用asp:HyperLink并将NavigateUrl设置为目标页面。 -
@TetsuyaYamamoto - 我尝试添加代码,它只在第二次点击时有效。
-
在
Page_Load或在RowDataBound之前运行的其他事件(记住页面生命周期)中添加另一个lb.Attributes.Add("target","_blank")怎么样? -
如果您使用
Response.Redirect,则无法打开新标签页。但是,如果您所做的只是重定向,为什么要完全隐藏代码而不创建普通的 html 链接。直接在aspx上使用strItemID即可。