Скрыть определенные совокупные данные сетки Kendo MVC - PullRequest
0 голосов
/ 27 сентября 2018

Я надеюсь скрыть определенные совокупные данные.У меня есть три группировки: товар, класс продукта, описание.

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

Я не могу понять, как спрятать два других агрегата (ProductClass, Commodity).

Вот пример того, что я пытаюсь скрыть: Example

У меня есть ощущение, что способ скрытия этой информации основан на событии onBound, но я не уверен, как его выполнить.

Вот таблицаконфигурация:

@(Html.Kendo().Grid<SmartAdminMvc.Models.LotStatus.LotStatusViewModel>()
    .Name("grid")
    .Events(e =>
    {
        //    e.ExcelExport("excelExport");
        e.DataBound("onDataBoundLotStatus");
    }).ToolBar(toolbar =>
    {
        toolbar.Excel();
    })
    .Excel(excel => excel.FileName("lotStatusExport" + DateTime.Now.ToString() + ".xlsx")
    .Filterable(false)
    .AllPages(true))
    .Pageable(pager => pager.Refresh(true))
    .Sortable()
    .Filterable(ftb =>
    {
        ftb.Extra(false);
        ftb.Operators(op =>
        {
            op.ForString(str =>
            {
                str.Clear().Contains("Contains");
            });
        });
    })
    .Scrollable()
    .Groupable()
    .Filterable()
    .Navigatable()
    .Resizable(resize => resize.Columns(true))
    .HtmlAttributes(new { style = "height:750px;" })
    .Columns(columns =>
    {
        columns.Bound(p => p.INVID).Hidden();
        columns.Bound(p => p.PRODUCT_NUMBER).Title("Prod #");
        columns.Bound(p => p.DESCRIPTION).Title("Description").Width(140);
        columns.Bound(p => p.FullLotNumber).Title("Lot-Sublot");
        //columns.Bound(p => p.CaseEquiv).Title("CaseEquiv");
        columns.Bound(p => p.BRAND_NAME).Title("Brand");
        columns.Bound(p => p.WAREHOUSE).Title("WH").Width(45).Filterable(false);//.Filterable(filterable => filterable.UI("warehouseFilter"))
        columns.Bound(p => p.CompanyDesc).Title("Company").Filterable(false); //.Filterable(filterable => filterable.UI("companyFilter"))
        columns.Bound(p => p.ReceiveDateFormatted).Format("{0:MM/dd/yyyy}").Width(80).Title("Date");
        columns.Bound(p => p.Age).Width(45).Filterable(false);
        columns.Bound(p => p.CONDITION).Title("Code").Width(45).Filterable(false);
        columns.Bound(p => p.@class).Title("Class").Width(45).Filterable(true);
        columns.Bound(p => p.Expected).Title("Expt").Filterable(false).ClientGroupFooterTemplate("#=sum#").ClientTemplate("#= formatExpected(Expected, LOT_NUMBER, SUB_LOT)#");
        columns.Bound(p => p.ONHAND).Title("OH").Filterable(false).ClientGroupFooterTemplate("#= sum#");
        columns.Bound(p => p.COMMITTED).Title("Cmt").Filterable(false).ClientGroupFooterTemplate("#=sum#").ClientTemplate("#= formatCommitted(COMMITTED, LOT_NUMBER, SUB_LOT)#");
        columns.Bound(p => p.Available).Title("Avail").Filterable(false).ClientGroupFooterTemplate("#=sum#");
        columns.Bound(p => p.ExpectedDateFormatted).Title("Expt Date").Format("{0:MM/dd/yyyy}");
        columns.Bound(p => p.Cost).Title("Cost").Format("{0:c}").Filterable(false);//.ClientGroupFooterTemplate("$#= (data.CostExt.sum/data.CaseEquivOH.sum).toFixed(2) #(EQ)")
        columns.Bound(p => p.CostExt).Title("Cost Ext").Format("{0:c}").Filterable(false).ClientGroupFooterTemplate("$#=sum#").ClientFooterTemplate("Totals: $#= formatDecimal(sum) #");
        columns.Bound(p => p.BUYER).Width(100).Title("Buyer").Filterable(true); //.Filterable(filterable => filterable.UI("buyerFilter").ClientFooterTemplate("Qty: #= (data.CaseEquiv.sum * data.ONHAND.sum)  #")
        columns.Bound(p => p.VENDOR).Title("Vendor/Ref#");
        columns.Bound(p => p.ORIGIN_CODE).Title("Orgn").Width(45);
        columns.Bound(p => p.COMMODITY).Title("Commodity").Filterable(false);
    })
    .DataSource(dataSource => dataSource
    .Ajax()
    .Sort(sort =>
    {
        sort.Add(x => x.Age).Descending();
        sort.Add(x => x.ExpectedDateFormatted);
    }
    )
    .Aggregates(aggregates =>
    {
        aggregates.Add(p => p.ONHAND).Sum();
        aggregates.Add(p => p.Available).Sum();
        aggregates.Add(p => p.CostExt).Sum();
        aggregates.Add(p => p.COMMITTED).Sum();
        aggregates.Add(p => p.Expected).Sum();
        aggregates.Add(p => p.CaseEquivOH).Sum();
        aggregates.Add(p => p.CostPerCaseEQ).Sum();
    })
        .Group(groups =>
        {
            groups.Add(p => p.COMMODITY);
            groups.Add(p => p.ProductClass);
            groups.Add(p => p.DESCRIPTION);
        })
    .Model(model =>
    {
        model.Id(p => p.INVID);
        model.Field(p => p.PRODUCT_NUMBER).Editable(false);
        model.Field(p => p.ORIGIN_CODE).Editable(false);
        model.Field(p => p.DESCRIPTION).Editable(false);
        model.Field(p => p.PACKAGING).Editable(false);
        model.Field(p => p.BRAND_NAME).Editable(false);
        model.Field(p => p.VENDOR).Editable(false);
        model.Field(p => p.WAREHOUSE).Editable(false);
        model.Field(p => p.CompanyDesc).Editable(false);
        model.Field(p => p.RECEIVE_DATE_SQL).Editable(false);
        model.Field(p => p.BUYER).Editable(false);
        model.Field(p => p.FullLotNumber).Editable(false);
        model.Field(p => p.Age).Editable(false);
        model.Field(p => p.NEW_CONDITION_CODE).Editable(false);
        model.Field(p => p.ONHAND).Editable(false);
        model.Field(p => p.COMMITTED).Editable(false);
        model.Field(p => p.Expected).Editable(false);
        model.Field(p => p.CaseEquiv).Editable(false);
        model.Field(p => p.ExpectedDateFormatted).Editable(true);
        model.Field(p => p.Cost).Editable(true);
        model.Field(p => p.CostExt).Editable(true);
        model.Field(p => p.COMMODITY).Editable(true);
}).PageSize(100).Read(read => read.Action("AllLots", "LotStatus").Data("lotStatusClientData"))))

Вот мое событие DataBound:

function onDataBoundLotStatus() {
var grid = this;
grid.tbody.find('>tr').each(function () {
    var dataItem = grid.dataItem(this);
    if (dataItem != null && dataItem.Age > 0) {

        if (dataItem.Age <= 7 && (dataItem.COMMODITY.trim() !== 'MATERIALS' && dataItem.COMMODITY.trim() !== 'MISC')) {
            $(this).addClass('lotStatusGreen');
        }
        else if (dataItem.Age >= 8 && dataItem.Age <= 20 && (dataItem.COMMODITY.trim() !== 'MATERIALS' && dataItem.COMMODITY.trim() !== 'MISC')) {
            $(this).addClass('lotStatusYellow');
        }
        else if (dataItem.Age >= 21 && dataItem.Age <= 30 && (dataItem.COMMODITY.trim() !== 'MATERIALS' && dataItem.COMMODITY.trim() !== 'MISC')) {
            $(this).addClass('lotStatusRed');
        }
        else if (dataItem.Age >= 31 && dataItem.Age <= 365 && (dataItem.COMMODITY.trim() !== 'MATERIALS' && dataItem.COMMODITY.trim() !== 'MISC')) {
            $(this).addClass('lotStatusOlive');
        }
        else {
            $(this).addClass('normal');
        }
    }

    if (dataItem != null && moment(new Date()).isAfter(dataItem.ExpectedDateFormatted) == true && dataItem.Expected > 0 && (dataItem.COMMODITY.trim() == 'MATERIALS' || dataItem.COMMODITY.trim() == 'MISC')) {
        $(this).addClass('lotStatusRed');
        console.log('red');
    }
});

Я хочу скрыть, чтобы каждая отдельная группа имела пустой агрегат:

datasource.aggregate.ProductClass([]);
datasrouce.aggregate.Commodity([]);
...