[英]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.