在AutoGenerated GridView中将列设置为HyperLink

时间:2011-01-04 03:10:45

标签: c# .net asp.net

我有自动生成的网格视图,它生成为:

gvOffer.DataSource = offer.View(ddlResult.SelectedValue);
gvOffer.DataBind();

我需要将第一列和第二列设置为超链接。换句话说,第1列和第2列下的行必须处于超链接状态。我该怎么办?我找到的大多数答案都要求我将auto-generated设置为false,我试图避免。

2 个答案:

答案 0 :(得分:3)

您可以将DataFormatString设置为URL形式,如下所示:http://forums.asp.net/p/1127741/1780013.aspx

略微修改 - 您需要在执行DataBind()调用之前在代码隐藏中设置formatstring。 (代码未经测试,抱歉,我不在我的开发电脑上)

gvoffer.Columns[0].DataFormatString = "<a href=\"http://mywebsite/page.aspx?q={0}\">{0}</a>"
gvoffer.Columns[0].HtmlEncode = false;

确保将列的HtmlEncode属性设置为“false”,否则url将只是htmlencoded并且无用(尽管我在下面的链接中看到这仅适用于.NET 3.0及更早版本。)

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx

答案 1 :(得分:1)

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string value = e.Row.Cells[0].Text;
            e.Row.Cells[0].Text = Convert.ToString("<a href=\"Office.aspx?number=" + value + "\">" + value + "</a>"); 
        }
    }