I have two simple requirements
a) I need to programmatically change the number of columns displaying in igGrid
b) I need to programmatically update the filters in igGrid
I am under the impression that to change the number of columns programmatically you first need to 'destroy' the grid then recreate it.
To update the filters you just have to do this
grid.igGridFiltering("filter", ([{ fieldName: "Column1", expr: true, cond: "true" }]));
I always get this error when calling my code
cannot call methods on igGridUpdating prior to initialization; attempted to call method 'destroy'
Here is a code snippet
scope.changeView = function(v) {
var grid = scope.element; //from directive
if (grid.data("igGrid") != null) {
grid.igGrid('destroy');
}
updateGrid(grid, v);
};
function updateGrid(grid, v) {
scope.gridOptions = coreFunctions.gridOptions(); //from service
scope.gridOptions.dataSource = scope.dataSource;
var cols = JSON.parse(v.Json);
cols = cols.fields;
scope.gridOptions.columns = [];
angular.forEach(cols, function(value, index) {
scope.gridOptions.columns.push({ 'headerText': value, 'key': value, width: '200px' });
});
grid.igGrid(scope.gridOptions); //error occurs here!
grid.igGrid('dataBind');
grid.igGridFiltering("filter", ([{ fieldName: "Column1", expr: true, cond: "true" }]));
}