2013-04-01 83 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并从数据字段中嵌入文本)。