动态地向服务器端添加超链接列(服务器端)

时间:2013-04-01 12:48:16

标签: asp.net gridview dynamic hyperlink server-side

我有一个 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);    
} 

其中dtDataTablegrdViewGridView

1 个答案:

答案 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类似,因此您可以使用静态文本构建网址并在数据域中嵌入文本)。