В классе DataTable есть очень полезный метод:
Сегодня столкнулся с проблемой при его вызове. Столбцы с "неправильными" с точки зрения рекомендаций именами, неверно обрабатываются в данном методе, например столбец с именем: "Сумма(CHF)" приводил к возникновению исключения. Тоже самое будет если в имени используется пробел, точка или запятая, для решения проблемы необходимо "неправильное" имя столбца в заключить в квадратные скобки.
Я в своем проекте для задания Caption`а, который отображается пользователю, когда-то давно по молодости написал метод(в классе который работает с базой), и использовал для этого свойство ColumnName, теперь так и тянется... Теперь нужно будет выделить день для исправления этой ошибки во всех проектах, так как в разных участках кода идет обращение к столбцам таблицы по их именам. Для задания текста отображаемого пользователю в заголовке столбца dataGridView нужно использовать свойство Caption класса DataTable!
Кстати еще один нюанс - столбец который содержит в свойстве ColumnName запятую - не сортируется в dataGridView(тоже было потрачено немало времени пока понял причину)!
Используйте свойство ColumnName с нестандартными именами только в исключительных ситуациях.
public object Compute(string expression, string filter) Член System.Data.DataTable Сводка: Вычисляет заданное выражение для текущих строк, отвечающих условию фильтра. Параметры: expression: Вычисляемое выражение. filter: Фильтр, ограничивающий число строк, используемых выражением. Возвращает: Класс System.Object, которому задан результат сравнения.
Сегодня столкнулся с проблемой при его вызове. Столбцы с "неправильными" с точки зрения рекомендаций именами, неверно обрабатываются в данном методе, например столбец с именем: "Сумма(CHF)" приводил к возникновению исключения. Тоже самое будет если в имени используется пробел, точка или запятая, для решения проблемы необходимо "неправильное" имя столбца в заключить в квадратные скобки.
decimal sum = 0; if (myNewDataGridView1.DataSource != null) sum = (decimal)(DataTable)myNewDataGridView1.DataSource).Compute("Sum([Сумма(CHF)])", String.Empty);
Я в своем проекте для задания Caption`а, который отображается пользователю, когда-то давно по молодости написал метод(в классе который работает с базой), и использовал для этого свойство ColumnName, теперь так и тянется... Теперь нужно будет выделить день для исправления этой ошибки во всех проектах, так как в разных участках кода идет обращение к столбцам таблицы по их именам. Для задания текста отображаемого пользователю в заголовке столбца dataGridView нужно использовать свойство Caption класса DataTable!
Кстати еще один нюанс - столбец который содержит в свойстве ColumnName запятую - не сортируется в dataGridView(тоже было потрачено немало времени пока понял причину)!
Используйте свойство ColumnName с нестандартными именами только в исключительных ситуациях.
Комментариев нет:
Отправить комментарий