У меня проблема с сортировкой в столбце Infragistics.
У меня есть столбец с числами (длинный тип), но тип данных столбца - строка.
Итак, теперь он сортируется по строке, которая недействительна. Если я изменю тип данных столбца на typeof(long), сортировка перестанет работать.
Знаете ли вы, как изменить тип сортировки числовых значений?
Обновлено:
myCell.Column.DataType = typeof(string);
Я использую Infragistics4.Win.v12.2.
Ответ 1 · Steve
Вы не можете изменить свойство DataType столбца, если это столбец, ограниченный источником данных. Вместо этого вы можете создать новый столбец в источнике данных с инициализатором выражения, который позволяет преобразовать столбец String в длинный столбец. Затем в сетке вы можете скрыть столбец строки и позволить вашему пользователю видеть только столбец, созданный с помощью выражения.
Предположим, у вас есть DataTable, загруженный таким образом.
DataTable dt = new DataTable();
sqlAdapter.Fill(dt);
Теперь вы можете добавить новый столбец длинного типа, используя выражение, которое копирует содержимое столбца String (я предполагаю, что каждая отдельная строка может быть преобразована в длинную)
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;
}