1

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

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

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

这是我到目前为止创建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();


}
4

3 回答 3

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);
    }
}
于 2012-11-09T10:44:44.587 回答
1

使用超链接字段

<asp:GridView ID="GridView1" runat="server">
<Columns>
    <asp:HyperlinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="page.aspx?ID={0}" />
</Columns>
</asp:GridView>
于 2012-11-09T10:55:49.373 回答
0
<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>
于 2012-11-09T12:12:30.417 回答