我有一个gridview,它从sqldatasource获取数据,结果从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();
}
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:HyperlinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="page.aspx?ID={0}" />
</Columns>
</asp:GridView>
答案 2 :(得分: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>