2012-03-21 62 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>