我正在动态构建一个DataTable,我想在我添加到DataTable中的DataRow(s)中添加一个“链接”。在创建后,将该 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时,列中的HTML被编码了。 有没有办法在那里添加一个HyperLink对象或类似的东西?
P.S. 这不是示例中的内容,但这些列是动态添加的(这意味着在渲染之前我不知道会有多少列)
更新#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进行编码。