![]() |
|
Модераторы: gambit |
![]()
|
|
| sindi8 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 6.6.2005 Где: Москва Репутация: нет Всего: нет |
Всем добрый день.
Подскажите пожалуйста, как мне решить следующую проблему: у меня есть поле А считанное из базы. Мне нужно сделать вычисляемый столбец В, но значение столбца генерируется на основе класса, который в свою очередь генерится на основе значения в столбце A. Спасибо. |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Можно подписаться на событие ColumnChanged (аналог RowChanged для отдельно взятой колонки таблицы датасета), оно будет генерироваться при любых изменениях любых полей таблицы, и всё что останется - это проверить что за поле изменилось и вычислить значение другого поля:
Другой способ, без отдельного класса - это назначить колонке таблицы св-во Expression. С его помощью можно выполнить достаточно богатый набор операций над другими колонками таблицы, числовыми и строковыми константами, задействовать встроенные функции (IIF, ISNULL, CONVERT, LEN, SUBSTRING, TRIM). Получим колонку с автоматически вычисляемым значением. Простой пример:
-------------------- ![]() |
||||
|
|||||
| sindi8 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 6.6.2005 Где: Москва Репутация: нет Всего: нет |
Ээээ, не совсем то что надо. Первый вариант работает только тогда, когда именно "меняется" значение в ячейке таблицы. Когда данные читаются из базы - событие не отрабатывается. Ну а второй вариант не подходит по условию - в том то все и дело что стандартных "заготовок" операций не достаточно. Помимо этих вариантов умные люди говорили что-то про DataBinding, но сам я никак это дело не осмыслю.
|
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Неправда. Надо просто чуть-чуть изменить поведение датасета, и будут тебе пересчитываться колонки при его заполнении. Например, наследуйся от него и вперед. |
|||
|
||||
| sindi8 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 6.6.2005 Где: Москва Репутация: нет Всего: нет |
Ага, согласен. По идее должно спасти. Сейчас я обошелся написанием функции в MSSQL. А на будущее - попробую.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |