我想在运行时动态地向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”。
我错过了什么?
答案 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);
}