none
DataGridView, как правильно реализовать вычисляемый столбец RRS feed

  • Вопрос

  • Есть DataGridView c колонками что то вроде: Кол-во, цена, скидка и сумма. Как правильно реализовать вычисление суммы при изменении других колонок?

    21 февраля 2011 г. 20:34

Ответы

  • Вы используете POCO? Если да, то в этом случае каждый класс сущности представлен partial-классом. Вы можете добавить новое свойство в этот класс (разместив свой partial-класс в другой части проекта) и вычислять его значения в get (без кэширования) или в set (с кэшированием).
    • Помечено в качестве ответа sdavkov 22 февраля 2011 г. 6:40
    22 февраля 2011 г. 5:13

Все ответы

  • Мне кажется, Вам нужно добавить вычисляемый столбец в таблицу источника данных, к которому привязан Ваш элемент DataGridView.
    21 февраля 2011 г. 20:46
  • Я не использую DataSet, доступ к данным реализован через Entity Framework
    21 февраля 2011 г. 21:00
  • Вы используете POCO? Если да, то в этом случае каждый класс сущности представлен partial-классом. Вы можете добавить новое свойство в этот класс (разместив свой partial-класс в другой части проекта) и вычислять его значения в get (без кэширования) или в set (с кэшированием).
    • Помечено в качестве ответа sdavkov 22 февраля 2011 г. 6:40
    22 февраля 2011 г. 5:13
  • Вы используете POCO? Если да, то в этом случае каждый класс сущности представлен partial-классом. Вы можете добавить новое свойство в этот класс (разместив свой partial-класс в другой части проекта) и вычислять его значения в get (без кэширования) или в set (с кэшированием).

    Хорошее решение, так и сделал. Я думал что эту логику надо с помощью DataGridView реализовать, но так даже лучше получилось )

    Спасибо Алескей!

    Еще вопрос, не нашел свойства у грида чтобы по нажатию Enter фокус уходил не на следующую строку а на следующую ячейку в текущей строке, это лучше сделать отлавливая событие KeyUp грида?

    22 февраля 2011 г. 6:40
  • Да, KeyDown подойдет, если таблица не находится в режиме редактирования. Для режима редактирования нужно обрабатывать событие EditingControlShowing , получать элемент редактирования e.Control и привязываться к его событию KeyDown (только нужно проверять, не был ли уже привязан этот обработчик, или отвязываться перед привязкой).
    22 февраля 2011 г. 7:25
  • Да, KeyDown подойдет, если таблица не находится в режиме редактирования. Для режима редактирования нужно обрабатывать событие EditingControlShowing , получать элемент редактирования e.Control и привязываться к его событию KeyDown (только нужно проверять, не был ли уже привязан этот обработчик, или отвязываться перед привязкой).


    Можно поподробнее, как привязать (контрол в режиме редактирования) к событию?

    Я получаю e.Control в событии грида EditingControlShowing и устанавливаю событие e.Control.KeyDown += new KeyEventHandler(editor_KeyDown), но событие не возникает при нажатии кнопки на контроле в режиме редактирования.

    27 февраля 2011 г. 11:06