Ok I have a hierarchical grid. One of the columns return in my SQL for both the Master Grid and Detail Grid is projectRoleId. I want to filter out roles that do not match the expanded rows projectRoleId. Currently , by following the kendo hierarchical grid example, I'm using the filter on the detailGrid like this:
filter: {
field: "projectRoleId", operator: "eq", value: e.data.projectRoleId
}
However all rows are still showing when I expand the master row.
This image shows the data returned to the Master Grid and Detail Grids.
// INITIALIZE / CREATE UI ELEMENTS //function initHierarchicalGrid() { var hierGrid = $("#kgProjectGroupCapacityPlanning").kendoGrid({ dataSource: new kendo.data.DataSource({ transport: { read: function (options) { $.ajax(getHierarchicalGrid(options)); } }, pageSize: 6, serverPaging: true, serverSorting: true, serverFiltering: true, schema: { data: function (data) { var res = JSON.parse(data.d); return res; }, model: getHierGridModel(), total: function (response) { var res = JSON.parse(response.d); return res.length; } } }), //height: 600, toolbar: setToolbarOptions(), sortable: true, pageable: true, //detailInit: function(e) { // e.detailRow.find(".grid").kendoGrid({ dataSource: e.data }); //}, detailInit: detailInit, detailExpand: function(e) { console.log(e.masterRow, e.detailRow); }, dataBound: function () { this.expandRow(this.tbody.find("tr.k-master-row").first()); }, columns: [ { field: "projectRoleId", visible: false, width: "110px" }, { field: "rolename", width: "110px" }, { field: "monthOne", title: "1/2017", width: "100px" } ] //detailTemplate: "<div>ProjectRoleId: #: projectRoleId #</div><div>RoleName: #: rolename #</div><div>Month One: #: monthOne #</div>" }).data("kendoGrid"); $('#btnCollapseAll').click(collapseAll); $('#btnExpandAll').click(expandAll);}function detailInit(e) { $("<div/>").appendTo(e.detailCell).kendoGrid({ dataSource: new kendo.data.DataSource({ transport: { read: function(options) { $.ajax(getDetailRows(options,e.data.projectRoleId)); } }, schema: { data: function (data) { var res = JSON.parse(data.d); return res; }, model: getDetailGridModel(), total: function (response) { var res = JSON.parse(response.d); return res.length; } }, serverPaging: true, serverSorting: true, serverFiltering: true, pageSize: 10, filter: { field: "projectRoleId", operator: "eq", value: e.data.projectRoleId } }), scrollable: false, sortable: true, pageable: true, columns: [ { field: "projName", width: "110px" }, { field: "sectorname", title: "Sector", width: "110px" }, { field: "name", title: "Customer", width: "200px" }, { field: "status", title: "Status", width: "100px" }, { field: "monthOne", title: "1/2017", width: "100px" } ] });}
JavaScript ajax calls:
// READ function getDetailRows(options,projectRoleId) { var paramData = { userId: userId, projectRoleId: projectRoleId }; return { url: "ProjectGroupCapacityPlanningDashboard.aspx/GetDetailRowsForGrid", data: JSON.stringify(paramData), dataType: "json", contentType: "application/json; charset=utf-8", type: "POST", success: function(result) { options.success(result); }, // notify the data source that the request succeeded error: function(result) { pageHelper.processAjaxError(result, notification); options.error(result); } // notify the data source that the request failed } } function getHierarchicalGrid(options) { var paramData = { userId: userId }; return { url: "ProjectGroupCapacityPlanningDashboard.aspx/GetHierRowsForGrid", data: JSON.stringify(paramData), dataType: "json", contentType: "application/json; charset=utf-8", type: "POST", success: function(result) { options.success(result); }, error: function (result) { pageHelper.processAjaxError(result, notification); options.error(result); } // notify the data source that the request failed } }
This must be a simple fix I am hoping as my example is pretty similar to the one Telerik uses.
Thanks,
julian kish
