2012-03-21 60 views
1

我确信之前已经询问过这个问题,但我找不到合适的答案。将超链接添加到数据表/ gridview

我创建一个DataTable动态,并使用它来填充网页控制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

所以它的asp.net,不是吗?我添加了相应的标签。 – digEmAll 2012-03-21 21:56:30

+0

@digemAll,是的欢呼.. – Standage 2012-03-21 21:57:15

+0

类似... http://stackoverflow.com/questions/4109021/link-in-a-datarow-datatable – vapcguy 2015-05-05 02:19:06

回答

1

您不会在Datatable中执行此操作 - 这只是数据的内存中表示形式。它不包含有关网格视图中列类型的任何信息。

一旦它在DataGridView中,只需将列类型设置为DataGridViewLinkColumn即可。

+0

对不起,我忘了提及这是一个网络控制不是Windows ... – Standage 2012-03-21 21:56:31

+0

噢 - 试试[这](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlinkfield.aspx)然后一个。 – Bridge 2012-03-21 22:05:25

0

当u绑定到一个GridView或详细信息视图,U可以添加超链接控制URL栏(模板字段)并设置

NavigateUrl='<%# Eval("URL")%>' 

OR

如果u想浏览到另一个网站像谷歌设置

NavigateUrl='<%# String.Format("http://{0}", Eval("URL")) %>' 

... :)

+0

我没有在asp中定义gridview的列,因为它们发生变化,gridview正在代码中生成... – Standage 2012-03-21 22:43:10

+0

@Standage我不太清楚你说的是什么。如果我错了,请纠正我,如果使用visual studio向导将数据绑定到网格视图,向导将自动创建绑定字段。然而,你可以将该绑定字段转换为模板字段,然后您可以将超链接控件添加到该模板字段中。 – Sas 2012-03-21 22:54:22

+0

我没有使用Visual Studio向导将数据绑定到GridView,我在代码中创建了一个带有上述内容的数据表,然后将其设置为网格视图数据源。 – Standage 2012-03-21 22:56:32

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>