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はエンコードされません。