Проблема с динамически добавляемым подзаголовком в пользовательский GridView - PullRequest
0 голосов
/ 27 июля 2011

Я хотел бы получить сетку с возможностью добавления подзаголовка (одной или нескольких строк) в соответствии со значением определенного столбца (источник данных сгруппирован по этому столбцу).Внутри моего унаследованного GridView я переопределяю метод OnRowDataBind: если значение рассматриваемого столбца при текущем вызове OnRowDataBind не равно предыдущим значениям, то перед текущей строкой вставляется специальный заголовок

Table tbl = this.Controls[0] as Table; //this - pointer to CustomGridView tbl.Controls.AddAt(rowIndex + add_counter + 1, NewSubHeaderRow); /*rowIndex - RowIndex of current row, add_counter - amount of already added SubHrader rows */ </p> <p>

Все работает правильно.Но проблема возникает при обратной передаче, когда GridView восстанавливает свое состояние.Первая строка и все ее элементы управления в каждой группе (другими словами, первая строка после каждой динамически добавляемой строки подзаголовка) не содержит никаких атрибутов.Но вторая строка в группе сохраняет свои собственные атрибуты и атрибуты первой строки.

Некоторая помощь будет очень полезной.Может быть, есть другой (и правильный) способ добавить строку в GridView.Тогда, пожалуйста, предоставьте мне ссылки на учебники или статьи.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Спасибо за Вакаса. Вот мое решение. Я перезаписываю CreateChild (источник данных, isBinding) и создаю список, куда помещается индекс строки, перед которой нужно добавить строку подзаголовка. На SaveViewState я добавляю этот список в запечатанный объект. При загрузке ViewState я загружаю этот список и, если он не нулевой, создаю строки подзаголовка по сохраненным индексам. Может быть, есть более простой и более естественный способ. Но это надежно скрыто от меня)))

0 голосов
/ 27 июля 2011

Динамические элементы управления исчезают при обратной передаче, поскольку в структуре обратной передачи отсутствует информация о таких элементах управления. Программист несет ответственность за отслеживание этих динамических элементов управления и воссоздание их после обратной передачи ...

Пожалуйста, обратитесь к следующему сообщению для воссоздания динамических элементов управления при обратной передаче: FAQ: почему динамические элементы управления исчезают при обратной передаче

...