2013-04-01 84 views
2

我有一個ASP.NET應用程序,該應用程序讀取XML源並在GridView中創建列。這個相同的XML源用於在DataTable中創建列。應用程序填充DataTable,然後使用服務器端代碼將DataTable綁定到GridView將超鏈接列動態添加到「GridView」(服務器端)

現在我想在GridView中顯示一個超鏈接,我不知道該怎麼做。 (請注意,該應用程序是不是利用了RowDataBound事件。)

這裏是我迄今:

foreach (XmlNode columnNode in columnNodes) 
{  
    dc = new DataColumn(columnNode.Attributes["ColumnName"].Value, 
     Type.GetType("System.String")); 
    dt.Columns.Add(dc); 

    boundField = new BoundField(); 
    boundField.HeaderText = columnNode.Attributes["ColumnDisplayName"].Value; 
    boundField.DataField = columnNode.Attributes["ColumnName"].Value; 
    boundField.SortExpression = columnNode.Attributes["ColumnName"].Value; 
    grdView.Columns.Add(boundField);  
} 

其中dtDataTablegrdViewGridView

回答

2

您應該使用HyperLinkField來完成此操作;這是一種專門用於顯示和格式化超鏈接的綁定字段。你只需要稍微更新代碼:

linkField = new HyperLinkField(); 
linkField.HeaderText = columnNode.Attributes["ColumnDisplayName"].Value; 
// The field you want to use as the displayed text of the hyperlink 
linkField.DataTextField = columnNode.Attributes["ColumnName"].Value; 
// The field(s) you want to use in the URL behind the hyperlink 
linkField.DataNavigateUrlFields = new string[] { columnNode.Attributes["ColumnName"].Value }; 
// The formatting string for your hyperlink. Use this to build the links the way you want them. 
linkField.DataNavigateUrlFormatString = "http://yourSiteName/links/{0}"; 
linkField.SortExpression = columnNode.Attributes["ColumnName"].Value; 
grdView.Columns.Add(linkField); 

你忽略了你的問題的一部分是你想要的這些超鏈接的URL的樣子。 DataNavigateUrlFormatString非常靈活(它的工作原理與String.Format相似,因此您可以從靜態文本構建URL並從數據字段中嵌入文本)。