1

有没有办法将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 上使用查询字符串做一些事情来重定向到我需要的页面,但这是我第一次使用查询字符串,所以我有点困惑。

谢谢!

4

3 回答 3

4
<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 and routeid2 are passed as query strings to the controller of that page.

于 2013-01-28T23:12:21.780 回答
0

我最近所做的是将我的类修改为具有为我构造 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 后,您可以将任何源的属性绑定到项目。

于 2013-01-28T23:05:50.763 回答
0

就像是:

<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"]))
    }
}
于 2013-01-28T23:32:47.850 回答