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