#c# #asp.net #devexpress #aspxgridview #xtragrid
#c# #asp.net #devexpress #aspxgridview #xtragrid
Вопрос:
Ниже приведена часть моего базового EntityList
класса, которая содержит сетку. Позже сетка будет заполнена столбцами и строками в зависимости от дочерних объектов. Мне нужно показать количество строк в нижнем колонтитуле сетки, и поэтому я использую TotalSummary
.
<dx:ASPxGridView runat="server" ID="grdMain" ClientInstanceName="grid"
KeyFieldName="ID" AutoGenerateColumns="false">
<settings showfooter="True"/>
<TotalSummary>
<dx:ASPxSummaryItem FieldName="ID" SummaryType="Count"/>
</TotalSummary>
</dx:ASPxGridView>
Проблема в том, что в разных объектах, использующих этот базовый класс, у меня разные имена для ID
столбца, такие как InvoiceID
CustomerID
, и т.д. Итак, как сообщить сетке, что Count
я хочу, чтобы она показывала? Даже если бы у меня было то же имя для указанного столбца, этот столбец не был бы виден в сетке, поэтому он TotalSummaryItem
показывает количество этого столбца, не будет отображаться в сетке.
Есть ли какой-либо способ сообщить сетке, что мне нужно, чтобы она отображала Count
количество строк, а не указанный столбец с фиксированным именем?
Есть идеи, как решить эту проблему??? Большое спасибо!
PS если это поможет, я реализую IListServer
в DataObject
классе
Ответ №1:
Документация для FieldName
property ничего не говорит об этом, но в ней говорится кое-что важное, что может помочь решить проблему.
Используя Custom
для значения SummaryType
свойства и CustomSummaryCalculate
события обработки, вы получаете полный контроль над тем, как вычисляется итоговый элемент. Обработайте событие и посчитайте строки, как хотите.
Другой вариант — добавить элемент сводки в коде, где вы знаете имена столбцов. Я думаю, когда вы создаете сетку и предоставляете ее данные, вы можете найти имя нужного столбца.
Комментарии:
1. К сожалению, мне все еще нужно привязать пользовательскую сводку к столбцу:
<dx:ASPxSummaryItem FieldName="???" SummaryType="Custom"/>
2. Что происходит, когда вы оставляете его пустым?
3. По-прежнему ничего не происходит.
Field Name
должно быть заполнено существующим именем поля.