我正在动态构建一个 DataTable,并尝试在要添加到 DataTable 的 DataRow 中添加一个“链接”。DataTable 在创建后绑定到 GridView。
类似的东西:
DataTable dataTable = new DataTable();
foreach (Item item in items)
{
DataRow row = dataTable.NewRow();
dataTable.Columns.Add(new DataColumn("col"));
row["col"] = "<a href='http://www.google.com'>Link here</a>";
dataTable.Rows.Add(row);
}
然后我将它绑定到 GridView :
<asp:GridView ID="grdView" Runat="server" border="0" EnableViewState="true" style="width:100%;"
AutoGenerateColumns="true" AllowPaging="false" PagerSettings-Visible="false"
ShowHeader="true" ShowFooter="true" CellPadding="0" CellSpacing="0"
Visible="True">
</asp:GridView>
但是当我将列中的 HTML 绑定到 GridView 时,它会被编码。有没有办法在那里添加一个超链接对象或类似的东西?
PS 示例中没有,但列是动态添加的(这意味着在渲染之前我不知道我将拥有多少列)
更新#1
创建列时,我可以访问 GridView。我能够做这样的事情:
dataTable.Columns.Add(new DataColumn("col"));
BoundField bf = new BoundField();
bf.HtmlEncode = false;
bf.DataField = "col";
grd.Columns.Add(bf);
row["col"] = "<a href='http://www.google.com'>Link here</a>";
但它显示 2 列“col”...
更新#3: 我改用了 DataGrid。在数据行中插入“纯文本”时,它不会对 HTML 进行编码。