2

XML ソースを読み取り、GridViewに列を作成するASP.NETアプリケーションがあります。この同じ XML ソースを使用して、DataTableに列を作成します。アプリケーションは にデータを入力し、サーバー側コードを使用してをにバインドします。DataTableDataTableGridView

にハイパーリンクを表示したいのですが、その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);    
} 

どこdtDataTablegrdViewですGridView

4

1 に答える 1

2

You should use a HyperLinkField to accomplish this; it's a type of bound field specifically designed for displaying and formatting hyperlinks. You only need to slightly update your code:

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);

The part you've left out of your question is what you want these hyperlink URLs to look like. The DataNavigateUrlFormatString is pretty flexible (it works like String.Format, so you can construct a URL from static text and embedding text from your datafields).

于 2013-04-01T19:01:49.870 に答える