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