none
DataGridView и работа со солжными данными RRS feed

  • Вопрос

  • Здравствуйте.

    Есть список данных где есть поле с Id, по которым происходит связь с другими объектами. Как вместо Id показывать значения связанных типов, например поле Name в DataGridView?
    20 февраля 2011 г. 19:08

Ответы

  • То есть, фактически, Вам вместо значения Id нужно отображать соответствующее значение из связанного справочника. В таком случае, наверное, лучше предварительно закэшировать все содержимое справочника (если его объем небольшой), оставить столбец Id в результатах запроса и обрабатывать событие CellFormatting для этого столбца или же переопределить метод GetFormattedValue в используемом Вами наследнике класса DataGridViewTextBoxCell. Нужно только будет убедиться, что не возникнут какие-либо побочные эффекты, связанные с устареванием кэша
    • Помечено в качестве ответа sdavkov 21 февраля 2011 г. 8:18
    21 февраля 2011 г. 8:03

Все ответы

  • Нужно возвращать его (поле Name) в результате операции SELECT. Если Вам при этом нужно поле Id для каких-то других целей (но при этом не нужно отображать его в DataGridView), Вы можете скрывать его (устанавливать свойство Visible в false) в обработчике ColumnAdded . Посмотрите также ответ на этот вопрос , принципы решения этой задачи довольно схожи.
    20 февраля 2011 г. 19:38
  • При первоначальной выборке в Select не пойдет, т.к. мне нужен режим редактирования, то есть  возможность выбора другого значения для этой строки.
    21 февраля 2011 г. 6:12
  • Уточните, пожалуйста, Вам нужно подставить вместо ячеек этого столбца ячейки с раскрывающимися списками для выбора другого значения?
    21 февраля 2011 г. 6:18
  • Я наследую свой тип ячейки от DataGridViewTextBoxCell и делаю свой редактор от IDataGridViewEditingControl. В итоге хочу получить что то вроде механизма как в 1С, с поиском по подстроке и открытием формы списка с доступными элементами для выбора.

    Сейчас проблема в том чтобы отобразить вместо Id например название элемента.

    Возможно есть готовый пример?

     

    21 февраля 2011 г. 7:52
  • То есть, фактически, Вам вместо значения Id нужно отображать соответствующее значение из связанного справочника. В таком случае, наверное, лучше предварительно закэшировать все содержимое справочника (если его объем небольшой), оставить столбец Id в результатах запроса и обрабатывать событие CellFormatting для этого столбца или же переопределить метод GetFormattedValue в используемом Вами наследнике класса DataGridViewTextBoxCell. Нужно только будет убедиться, что не возникнут какие-либо побочные эффекты, связанные с устареванием кэша
    • Помечено в качестве ответа sdavkov 21 февраля 2011 г. 8:18
    21 февраля 2011 г. 8:03
  • Спасибо, GetFormattedValue - то что нужно.
    21 февраля 2011 г. 8:17