Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基础设施超网格中的超链接单元_C#_Winforms_Infragistics_Ultrawingrid - Fatal编程技术网

C# 基础设施超网格中的超链接单元

C# 基础设施超网格中的超链接单元,c#,winforms,infragistics,ultrawingrid,C#,Winforms,Infragistics,Ultrawingrid,我有一个UltraGrid,它绑定到一个带有两列(键、值)的DataTable。我在DataTable中添加了10行,现在第11行的值列中有一个URL。URL值添加得很好,但它不像超链接那样工作。要使其作为超链接工作,我需要如何将此行添加到UltraGrid中? 我的代码: DataTable dt=newdatatable(); 添加(“键”,类型(字符串)); 添加(“值”,类型(字符串)); ultraGrid.DataSource=dt; foreach(字典中的KeyValuePair

我有一个
UltraGrid
,它绑定到一个带有两列(键、值)的
DataTable
。我在DataTable中添加了10行,现在第11行的值列中有一个URL。URL值添加得很好,但它不像超链接那样工作。要使其作为超链接工作,我需要如何将此行添加到UltraGrid中? 我的代码:

DataTable dt=newdatatable();
添加(“键”,类型(字符串));
添加(“值”,类型(字符串));
ultraGrid.DataSource=dt;
foreach(字典中的KeyValuePair kvp)
{
dt.Rows.Add(kvp.Key,kvp.Value);
}
//添加具有URL值的行。
字符串url=“SomeURL”;
Uri hyperLink=新Uri(url);
添加(“单击此”,超链接);

定义网格列时,使用类型:
Infragistics.Win.UltraWinGrid.ColumnStyle.URL
作为列类型


然后网格将在您的代码中引发一个
CellLinkClicked
事件。

当您定义网格列时,使用类型:
Infragistics.Win.UltraWinGrid.ColumnStyle.URL
作为列类型


然后,网格将在您的代码中引发一个
CellLinkClicked
事件。

而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;
    }
}

虽然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;
    }
}

这将更改列中的每个单元格,而不仅仅是最后一个。您可以设置单元格的样式:链接被@alhalama打断,注释被@alhalama打断。基本上你可以做
cell.Style=ColumnStyle.URL
。这是到的链接,希望不会很快断开。(Infragistics需要修复他们的文档,yeeesh!)我找不到任何
CellLinkClicked
事件的引用。您可以使用ClickCell事件,因为您正在将单元格设置为超链接:这将更改列中的每个单元格,而不仅仅是最后一个。您可以设置单元格的样式:链接被@alhalama打断注释。基本上你可以做
cell.Style=ColumnStyle.URL
。这是到的链接,希望不会很快断开。(Infragistics需要修复他们的文档,yeeesh!)我找不到任何
CellLinkClicked
事件的引用。您可以使用ClickCell事件,因为您正在将单元格设置为超链接: