簡體   English   中英

Infragistics UltraGrid中的超鏈接單元

[英]Hyperlink cell in Infragistics UltraGrid

我有一個UltraGrid ,它綁定到一個DataTable有兩列(Key,Value)。 我在DataTable中添加了10行,現在第11行在Value列中有一個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);

雖然U1199880給出的答案指向部分正確的解決方案,但是將該樣式應用於整個列存在問題。 列中的每個單元格都將被視為鏈接。

相反,您需要攔截InitializeRow事件並檢查當前行的當前單元格是否是有效的URI。 然后將單元格樣式屬性更改為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;
    }
}

定義網格列時,請使用類型: Infragistics.Win.UltraWinGrid.ColumnStyle.URL作為列類型。

然后網格將在您的代碼中引發CellLinkClicked事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM