2

我有一个ASP.NET应用程序,它读取 XML 源并在GridView中创建列。这个相同的 XML 源用于在DataTable中创建列。应用程序填充DataTable然后将 绑定DataTableGridView使用的服务器端代码。

现在我想在中显示一个超链接,但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是 aDataTable并且grdView是 a GridView

4

1 回答 1

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

于 2013-04-01T19:01:49.870 回答