我有一个 ASP.NET 应用程序,它读取XML源并在GridView中创建列。这个相同的XML源用于在DataTable中创建列。该应用程序填充DataTable
,然后使用服务器端代码将DataTable
绑定到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);
}
其中dt
是DataTable
而grdView
是GridView
。
答案 0 :(得分: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);
您遗漏问题的部分是您希望这些超链接网址的外观。 DataNavigateUrlFormatString
非常灵活(它的工作方式与String.Format
类似,因此您可以使用静态文本构建网址并在数据域中嵌入文本)。