Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Изменить тип сортировки в столбце Infragistics

Автор вопроса: mskuratowskiОтветов: 1

У меня проблема с сортировкой в ​​столбце Infragistics.

У меня есть столбец с числами (длинный тип), но тип данных столбца - строка.

Итак, теперь он сортируется по строке, которая недействительна. Если я изменю тип данных столбца на typeof(long), сортировка перестанет работать.

Знаете ли вы, как изменить тип сортировки числовых значений?

Обновлено:

myCell.Column.DataType = typeof(string);

Я использую Infragistics4.Win.v12.2.

  • Это странно. Можете ли вы показать, как и когда вы меняете тип данных столбца? Расскажите, какую версию Infragistics Ultragrid вы используете? Steve 31.08.2017
  • @ Стив, я обновил свой пост. mskuratowski 31.08.2017
  • Но является ли этот столбец связанным столбцом? Steve 31.08.2017
  • @ Стив, да, это связанный столбец. mskuratowski 31.08.2017

sortingwinforms

Ответы

Ответ 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;
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы