尝试在GridView单元格中添加超链接会创建文本

时间:2014-04-22 16:51:31

标签: asp.net gridview hyperlink

我想在运行时动态地向ASP.NET GridView控件的单元格添加超链接,但不清楚正确的方法。

首先,我尝试将链接添加到GridView:

HyperLink the_url = new HyperLink();
the_url.NavigateUrl = "http://www.stackoverflow.com";
the_url.Text = "Stack Overflow";
MyGridView.Rows[0].Cells[0].Controls.Add(the_url);

这已编译,但由于当然没有行而出现运行时错误。

接下来,我尝试绑定DataTable:

dt = new DataTable();

// Add columns to table
DataColumn col = new DataColumn();
col = new DataColumn("URL");
dt.Columns.Add(col);
col = new DataColumn("Title");
dt.Columns.Add(col);

// Add row to table
DataRow dr = dt.NewRow();
dr["URL"] = the_url;
dr["Title"] = "Stack Overflow";
dt.Rows.Add(dr);

// Bind table
MyGridView.DataSource = dt;
MyGridView.DataBind();

这会创建行,但它不显示链接,而是显示纯文本“System.Web.UI.WebControls.HyperLink”。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

使用RowDataBound事件:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    HyperLink the_url = new HyperLink();
    the_url.NavigateUrl = "http://www.stackoverflow.com";
    the_url.Text = "Stack Overflow";

    e.Row.Cells[0].Controls.Add(the_url);
}