在Infragistics列中更改排序类型

时间:2017-08-31 11:41:32

标签: winforms sorting infragistics ultragrid

我在Infragistics列中排序时遇到问题。

我有一个带数字的列(长类型),但列数据类型是一个字符串。

所以现在它按一个无效的字符串排序。 如果我将列数据类型更改为typeof(long),则排序停止工作。

您知道如何更改数值的排序类型吗?

更新:

myCell.Column.DataType = typeof(string);

我正在使用Infragistics4.Win.v12.2

1 个答案:

答案 0 :(得分:0)

如果列是绑定到DataSource的列,则无法更改列的DataType属性。相反,您可以使用表达式初始值设定项在数据源中创建一个新列,该表达式允许您转换长列中的String列。然后在网格中,您可以隐藏字符串列,并让您​​的用户只能看到使用表达式创建的列。

假设您以这种方式加载了DataTable

DataTable dt = new DataTable();
sqlAdapter.Fill(dt);

现在,您可以使用复制String列内容的Expression添加一个long类型的新列(我假设每一行都可以转换为long)

dt.Columns.Add("NewLongCol", typeof(long), "StringCol");
yourGrid.DataSource = dt;

最后在网格的InitializeLayout事件处理程序中隐藏字符串列并将长列放在其位置

private void yourGrid_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
    UltraGridBand b = e.Layout.Bands[0];
    int pos = b.Columns["StringCol"].Header.VisiblePosition;
    b.Columns["StringCol"].Hidden = true;
    b.Columns["NewLongCol"].Header.VisiblePosition = pos;
}