添加到数据表/ gridview的超链接

时间:2012-03-21 21:27:43

标签: c# asp.net gridview

我确信以前曾经问过这个问题,但我找不到合适的答案。

我正在动态创建数据表并使用它来填充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();

3 个答案:

答案 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")) %>'

...:)