【问题标题】:How to open a new tab/window on clicking on ItemTemplate asp:Image Button with Query String?如何在单击 ItemTemplate asp:带有查询字符串的图像按钮时打开一个新选项卡/窗口?
【发布时间】:2012-06-26 05:45:14
【问题描述】:

我在 DataList ItemTemplate 中有一个 ImageButton,我试图在单击 ImageButton 时打开一个新页面(新选项卡),但它在同一个选项卡中打开。

<ItemTemplate>
   <asp:ImageButton ID="ibtmImage" runat="server" ImageUrl='<%# Eval("Image") %>'OnCommand="ibtmImage_Command" CommandArgument='<%# Eval("Id").ToString() %>' OnClientClick="aspnetForm.target ='_blank';" />
</ItemTemplate>

protected void ibtmImage_Command(object sender, CommandEventArgs e)
{
   Response.Redirect("ItemList.aspx?Id=" + e.CommandArgument.ToString());
}

如何在新标签/新窗口中打开页面。

请有人帮帮我。

【问题讨论】:

  • 我不想使用任何额外的控件,比如超链接

标签: c# asp.net


【解决方案1】:

我正在做这样的事情并在新标签中打开

protected void ibtmImage_Command(object sender, CommandEventArgs e)
{
     string strJS = ("<script type='text/javascript'>window.open('ItemList.aspx?Id=" + e.CommandArgument.ToString() + "','_blank');</script>");
     Page.ClientScript.RegisterStartupScript(this.GetType(), "strJSAlert", strJS);
}

【讨论】:

    【解决方案2】:

    在你的 aspx 页面中针对 OnClientClick 做:

    OnClientClick="window.open('http://yourpagetopen/');"
    

    所以你的图片按钮是:

    <asp:ImageButton 
     ID="ibtmImage" 
     runat="server" 
     ImageUrl='<%# Eval("Image") %>'
     OnCommand="ibtmImage_Command" 
     CommandArgument='<%# Eval("Id").ToString() %>' 
     OnClientClick="window.open('aspnetForm'); " />
    

    您也可以在服务器端事件中去掉Response.Redirect 并从onClientClick 传递参数。

    【讨论】:

      【解决方案3】:

      ASPX

         <asp:TemplateField Headertext="Name" HeaderStyle-HorizontalAlign="Center">
                              <ItemTemplate>           
                                  <asp:HyperLink ID="HyperLink1" runat="server"  Text='<%# Eval("Name") %>' CssClass="no_underline"
                                      NavigateUrl='<%# GetNavigateUrl(Eval("Id").ToString()) %>' />
                              </ItemTemplate>
                      <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                          </asp:TemplateField>
      

      CS 绑定下一个函数

         protected string GetNavigateUrl(string Id)
              {
                  string startDateStr = StartDate.ToShortDateString();
                  string endDateStr = EndDate.ToShortDateString();
                  var script = String.Format("javascript:var w=window.showModalDialog('Details.aspx?Id={0}&StartDate={1}&EndDate={2}', " +
                                       "'Details', 'dialogWidth:1120px; dialogHeight:500px; resizable:no; status: no;');", PartnerId, startDateStr, endDateStr);           
                  return script;
              }    
      

      【讨论】:

        【解决方案4】:
         <asp:HyperLink ID="docTitle" Text='<%#Eval("Titleofdoc") %>' NavigateUrl='<%# string.Concat("~/UI/UploadFilestest.aspx?docId=", Eval("DocId"))%>' Target="_blank"
                                        runat="server" />
        

        【讨论】:

        • 这个答案不使用图片按钮
        猜你喜欢
        • 2019-09-20
        • 1970-01-01
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 2013-12-14
        • 1970-01-01
        相关资源
        最近更新 更多