我确信以前曾经问过这个问题,但我找不到合适的答案。
我正在动态创建数据表并使用它来填充Web控件gridview ...
我想知道是否或如何将1列(URL)更改为超链接?
我创建数据表的代码:
private DataTable CreateDataTable()
{
DataTable myDataTable = new DataTable();
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Title";
myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "URL";
myDataTable.Columns.Add(myDataColumn);
.
.
.
}
我正在添加数据表如下:
private void AddDataToTable(string title, string strLink......
{
DataRow row = myTable.NewRow();
row["Title"] = title;
row["URL"] = strLink;
.
.
.
然后将数据表绑定到gridview:
datagrid.DataSource = ((DataTable)Session["myDatatable"]).DefaultView;
datagrid.DataBind();
答案 0 :(得分:2)
您不会在Datatable中执行此操作 - 这只是数据的内存中表示。它没有关于网格视图中列类型的任何内容。
一旦进入DataGridView,只需将列类型设置为DataGridViewLinkColumn。
答案 1 :(得分:1)
你可以做到
row["URL"] = "<a href='www.stackoverflow.com'>Stack Overflow</a>";
但是你应该在GridView上使用BoundField,并设置HtmlEncode="false"
:
<asp:BoundField DataField="URL" HtmlEncode="false" HeaderText="URL" HeaderStyle-Wrap="false" SortExpression="URL">
<ItemStyle Width="25% />
</asp:BoundField>
答案 2 :(得分:0)
当你绑定到gridview或Detail视图时,你可以将超链接控件添加到url列(Template字段)并设置
NavigateUrl='<%# Eval("URL")%>'
OR
如果你想导航到像谷歌这样的其他网站,请设置
NavigateUrl='<%# String.Format("http://{0}", Eval("URL")) %>'
...:)