隐藏某些汇总数据Kendo MVC网格

时间:2018-09-27 13:49:28

标签: asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc

我希望隐藏某些汇总数据。我分为三个分组:商品,产品类,说明。

所有这三列都在显示汇总数据,但我只想在“描述”分组中显示它。

我一辈子都无法弄清楚如何隐藏其他两个集合(ProductClass,Commodity)。

以下是我要隐藏的示例: Example

我觉得隐藏此信息的方式基于on DataBound事件,但是我不确定如何执行它。

这是网格配置:

@(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([]);

0 个答案:

没有答案