Как определить имя столбца дочерней сетки фильтров в сетке кендо - PullRequest
0 голосов
/ 28 ноября 2018

Я применил фильтр в дочерней сетке, но не идентифицировал фильтр дочерней сетки или фильтр основной сетки.

var childGrid = $(#ParentGird).closest(".k-grid").data("kendoGrid");
    childGrid..dataSource.filter({});

1 Ответ

0 голосов
/ 28 ноября 2018

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

Это хорошо работает для меня и того, что мне нужно, и используется во многих местах.

Если вам нужна дополнительная помощь, отредактируйте ваш вопрос и дайте мне знать, что вам нужно

Это моя сетка с дочерней сеткой

@(Html.Kendo().Grid<OrderLineViewModel>()
        .Name("DispatchedGrid")
        .Columns(columns =>
        {
            columns.Bound(e => e.OrderLineID).Visible(false);
            columns.Bound(e => e.OrderDispatchID).Visible(false);
            columns.Bound(o => o.OrderLineDispatchID).Visible(false);
            columns.Bound(e => e.OrderLineNo);
            columns.Bound(e => e.ProductCode);
            columns.Bound(e => e.ProductItemNumber);
            columns.Bound(e => e.ProductDescription);
            columns.Bound(e => e.Quantity);

        }).NoRecords("Blank Dispatch - Back Order")
    .AutoBind(false)
    .ClientDetailTemplateId("template")
    .DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(6)
    .Read(read => read.Action("GetOrderLines", "Dispatch"))
    )
    .Events(events => events.DataBound("fe_dispatch.dataBoundDispatch"))
)

<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<OrderLineDispatchViewModel>()
              .Name("grid_#=OrderLineID#") // template expression, to be evaluated in the master context
              .Columns(columns =>
              {
                  columns.Bound(o => o.OrderID).Visible(false);
                  columns.Bound(o => o.OrderLineID).Visible(false);
                  columns.Bound(o => o.BoxQuantity).Visible(false);
                  columns.Bound(o => o.LotNumber).Width(200);
                  columns.Bound(o => o.InventoryQuantity);
                  columns.Bound(o => o.Bin).Width(200);
                  columns.Bound(o => o.DispatchedQuantity).Width(100); // If Qty = 0 then need to have a spinner here that will allow for bin selection.
              })
              .Editable(m => m.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
              .DataSource(dataSource => dataSource
                  .Ajax()
                  .PageSize(10)
                  .Read(read => read.Action("GetOrderDispatchLines", "Dispatch", new { orderLineId = "#=OrderLineID#", dispatchId = "#=OrderDispatchID#" }))
                  .Model(model =>
                  {
                      model.Id(l => l.OrderLineID);
                      model.Field(p => p.DispatchedQuantity).Editable(true);
                      model.Field(p => p.LotNumber).Editable(false);
                      model.Field(p => p.InventoryQuantity).Editable(false);
                      model.Field(p => p.Bin).Editable(false);
                  })
              )
              .ToClientTemplate())

Тогда в TypeScript за этим находится то, что внутри моего метода (обрезано для того, что вам нужно)

var parentGrid: kendo.ui.Grid = $("#DispatchGrid").data("kendoGrid") as any;
var gridDataRow = parentGrid.dataSource.data();

 $.each(gridDataRow,
            (index, pItem) => {
                var childGrid: kendo.ui.Grid = $("#grid_" + pItem.OrderLineID).data("kendoGrid") as any;
                $.each(childGrid.dataSource.data(),
                    (index, cItem) => {
                        if (cItem.DispatchQuantity < 0) {


                        console.log(cItem);
                        dispatchItems.push({
                            OrderID: pItem.OrderID,
                            PickId: pickId,
                            OrderLineID: pItem.OrderLineID,
                            OrderLineNo: pItem.OrderLineNo,
                            ProductCode: pItem.ProductCode,
                            BoxQuantity: pItem.BoxQuantity,
                            ProductItemNumber: pItem.ProductItemNumber,
                            Description: pItem.ProductDescription,
                            LotNumber: cItem.LotNumber,
                            InventoryQuantity: cItem.InventoryQuantity,
                            Bin: cItem.Bin,
                            Quantity: cItem.DispatchQuantity,
                        });
                    });
            });
...