【问题标题】:Using hyperlink with querystring for gridview row对 gridview 行使用带有查询字符串的超链接
【发布时间】:2013-01-28 23:00:33
【问题描述】:

有没有办法将gridview的行变成一个超链接,这样当用户在一个新的选项卡中打开它时,它就会转到那个链接?现在我正在使用 LinkBut​​ton,当用户在新选项卡中打开它时,它不知道去哪里。

我认为 .aspx 代码看起来像:

   <asp:TemplateField>
                <ItemTemplate>              
                    <Hyperlink ID="hyperlink" runat="server" ForeColor="red" HtmlEncode="false" navigationURL="testUrl.aspx"                             
                </ItemTemplate>
  </asp:TemplateField>

唯一的问题是,我们的 URL 在后面的 C# 代码中设置为查询字符串,所以我不确定如何将它传递到 navigationURL 部分。

我猜我可以在 page_load 上使用查询字符串做一些事情来重定向到我需要的页面,但这是我第一次使用查询字符串,所以我有点困惑。

谢谢!

【问题讨论】:

    标签: asp.net gridview query-string


    【解决方案1】:
    <asp:TemplateField>
                    <ItemTemplate> 
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#String.Format("~/controller.aspx?routeID1={0}&routeID2={1}", Eval("routeid1"), Eval("routeid2"))%>'></asp:HyperLink>
                 </ItemTemplate>
      </asp:TemplateField>
    

    routeid1 和 routeid2 作为查询字符串传递给该页面的控制器。

    【讨论】:

    • 所以我尝试了这个,我想我知道如何设置 NavigateURL 但是....我的超链接不可点击。你有这个问题吗?
    【解决方案2】:

    我最近所做的是将我的类修改为具有为我构造 A 标记的只读属性。这样我就可以控制显示的内容;只是文字或链接。

    <ItemTemplate>
          <asp:Label ID="ColumnItem_Title" runat="server" Text='<%# Bind("DownloadATag") %>'>  </asp:Label>
    </ItemTemplate>
    

    后面的代码只是将类的一个实例绑定到gridview。您可以在任何时候绑定gridview,在回发事件加载时等等。

     Dim docs As DocViewList = GetViewList()
    
     GridViewDocuments.DataSource = docs
     GridViewDocuments.DataBind()
    

    在上面的代码中,实例化为 docs 的 DocViewList 是一个类的列表,该类具有填充我的 GridView 所需的所有属性,此处命名为 GridViewDocuments。设置 GridView 的 DataSource 后,您可以将任何源的属性绑定到项目。

    【讨论】:

    • 您的 Bind("downloadtag") 将您带到您需要去的地方的代码是什么样的?
    【解决方案3】:

    类似:

    <asp:LinkButton ID="LinkButton_Title" runat="server" target="_blank" PostBackUrl='<%# Eval(Request.QueryString["title"]) %>'

    或从 RowCreated 事件绑定它们:

    protected void GridView_OnRowCreated(Object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
          (e.Row.FindControl("LinkButton_Title") as LinkButton).PostBackUrl = Request.QueryString["title"]))
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多