1

2つの列(Key、Value)を持つにバインドUltraGridされているがあります。DataTableDataTableに10行を追加しましたが、11行目の[値]列にURLがあります。URL値は正常に追加されますが、ハイパーリンクのようには機能しません。ハイパーリンクとして機能させるには、この行をUltraGridに追加するにはどうすればよいですか?私のコード:

DataTable dt = new DataTable();
dt.Columns.Add("Key", typeof(string));
dt.Columns.Add("Value", typeof(string));
ultraGrid.DataSource = dt;

foreach (KeyValuePair<string, string> kvp in dictionary)
{
    dt.Rows.Add(kvp.Key, kvp.Value);
}

// Adding the row which has the URL value.
string url = "SomeURL";
Uri hyperLink = new Uri(url);
dt.Rows.Add("Click this", hyperLink);
4

2 に答える 2

3

U1199880によって与えられた答えは部分的に正しい解決策を示していますが、そのスタイルを列全体に適用することには問題があります。列のすべてのセルはリンクとして扱われます。

代わりに、イベントをインターセプトしてInitializeRow、現在の行の現在のセルが有効なURIであるかどうかを確認する必要があります。次に、セルのStyleプロパティをColumnStyle.URLに変更します

private void grd_InitializeRow(object sender, InitializeRowEventArgs e)
{
    if (e.ReInitialize == false)
    {
        UltraGridColumn c = e.Row.Band.Columns["Value"];
        string link = e.Row.GetCellValue(c).ToString();
        if (Uri.IsWellFormedUriString(link, UriKind.Absolute))
            e.Row.Cells["Value"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.URL;
    }
}
于 2013-02-05T20:20:50.310 に答える
1

グリッド列を定義するときは Infragistics.Win.UltraWinGrid.ColumnStyle.URL、列タイプとしてタイプ:を使用します。

次に、グリッドはCellLinkClickedコードでイベントを発生させます。

于 2013-02-05T17:54:44.753 に答える