【问题标题】:Need to add a hyperlinkfield to a gridview containing data from another column需要将超链接字段添加到包含另一列数据的网格视图
【发布时间】:2012-11-09 10:28:27
【问题描述】:

我有一个从 sqldatasource 获取数据的 gridview,结果从 SQL 查询中获取 3 列:ID、描述和价格。

我想要做的是添加另一列,其中包含 page.aspx?id=x 格式的超链接,其中 x 是第一列的 ID 代码。这适用于表中的每一行。

我整个上午都在寻找如何做到这一点,我得到的只是我必须管理 RowDataBound 事件并使用超链接字段,但找不到任何其他解释它们如何实际协同工作的东西,甚至是 msdn文章在这个主题上有点含糊,或者只是对我的具体案例没有任何相关帮助,因为我正在从代码隐藏中管理 gridview。 也无法弄清楚如何从其他列访问字符串,因为这是我需要在生成的超链接中插入的内容。

这是我到目前为止创建网格视图的内容:

private void FillGrid(string qid)
{
    SqlDataSource1.ConnectionString = Connessione.connectionString;
    SqlDataSource1.SelectCommand = "SELECT art_tessuto_articolo, art_tessuto_descrizione, lipre_prezzo FROM lipre INNER JOIN listini_tessuti ON lipre.lipre_codice = listini_tessuti.listini_codice INNER JOIN art_tessuti ON lipre.lipre_articolo = art_tessuti.art_tessuto_articolo WHERE lipre_codice = @qid AND lipre_prezzo <> 0";
    SqlDataSource1.SelectParameters.Clear();
    SqlDataSource1.SelectParameters.Add("qid", qid);

    GridView1.AllowPaging = true;
    GridView1.PageSize = 500;
    GridView1.DataSource = SqlDataSource1;

    GridView1.DataBind();


}

【问题讨论】:

标签: c# asp.net gridview sqldatasource


【解决方案1】:

这应该可以完成工作。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       HyperLink hlControl = new HyperLink();
       hlControl.Text = e.Row.Cells[0].Text; 
       hlControl.NavigateUrl = "page.aspx?id=" + e.Row.Cells[0].Text;
       e.Row.Cells[3].Controls.Add(hlControl);
    }
}

【讨论】:

  • 谢谢,看起来正是我所需要的,这确实为我打开了一个充满可能性的世界
  • 刚刚尝试了代码,它给出了一个异常,因为显然新单元已被声明,修复很简单,只需要添加e.Row.Cells.Add(new TableCell());我会用正确的方式编辑你的答案代码
【解决方案2】:

使用HyperlinkField

<asp:GridView ID="GridView1" runat="server">
<Columns>
    <asp:HyperlinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="page.aspx?ID={0}" />
</Columns>
</asp:GridView>

【讨论】:

    【解决方案3】:
    <asp:GridView ID="GridView1" runat="server">    
      <Columns>
      <asp:TemplateField>
      <ItemTemplate>
          <asp:HyperLink runat="server" Text="VisibleText" NavigateUrl='<%# Eval(columnname) %>'></asp:HyperLink>
      </ItemTemplate>    
      </asp:TemplateField>
      </Columns>           
    </asp:GridView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多