我有一个 ASP.NET 应用程序,它读取 XML 源并在 GridView 中创建列。 。这个相同的 XML 源用于在 DataTable 中创建列。 。应用程序填充 DataTable
,然后使用服务器端代码将 DataTable
绑定(bind)到 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
。
最佳答案
您应该使用 HyperLinkField实现这一目标;它是一种专门用于显示和格式化超链接的绑定(bind)字段。您只需要稍微更新您的代码:
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 并从数据字段嵌入文本)。
关于asp.net - 动态向 'GridView' 添加超链接列(服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15743790/