Я заполняю Telerik RadGrid данными из DataTable (System.Data.DataTable
). Поскольку я поддерживаю чужое приложение, я не могу использовать другой источник данных или элемент управления отображением.
В моей сетке есть три столбца: скажем, это произведенные виджеты (столбец A), дефектные виджеты (столбец B) и доля неисправности (столбец C). Запрос базы данных предоставляет их для меня и делает расчет C = B / A.
У меня есть строка итогов (Telerik GridFooterItem
) внизу таблицы. В столбцах A и B Telerik вычисляет итоги для этих столбцов для меня. Мы не можем вычислить правильное значение для «итога» столбца C только из столбца C: мы должны заполнить его (сумма B) / (сумма A).
Мне удалось сделать это, обработав событие DataBound
в RadGrid и вручную заполнив ячейки в нижнем колонтитуле. (Мне пришлось поймать GridFooterItem
в событии ItemCreated
, а затем поместить в него значения в событии DataBound
, после того как он автоматически рассчитал для меня итоги по A и B.) Это кажется довольно хакерским - возможно, есть лучший способ ...?
В любом случае, важный бит таков:
Моя сетка разбита на группы, поэтому мне также нужно заполнить столбец C в GridGroupFooterItem
s. Я не могу заставить мою хакерскую технику работать в этом случае: я нахожу нужную ячейку нижнего колонтитула с помощью myGridFooterItem["WidgetsProduced"]
, но я не могу получить ячейки нижнего колонтитула группы с помощью myGridGroupFooterItem["WidgetsProduced"]
- это просто не словарь .
Я пытался использовать myGridGroupFooterItem.Cells[]
, но этот TableCellCollection
содержит на пару ячеек больше, чем я ожидал, поэтому доступ к ним по целочисленному индексу выглядит немного странно (особенно если это отчет, определенный пользователем, поэтому столбцы могут быть в любом порядке).
Итак: как мне заполнить эти ячейки моим расчетом?