FlexGrid - Paging & Export
Import/Export excel file to FlexGrid using
by Joel Parks
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<link rel="stylesheet" href="http://cdn.wijmo.com/5.20172.359/styles/wijmo.min.css">
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.min.js"></script>
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.input.min.js"></script>
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.grid.min.js"></script>
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.grid.filter.min.js"></script>
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.xlsx.min.js"></script>
<script src="http://cdn.wijmo.com/5.20172.359/controls/wijmo.grid.xlsx.min.js"></script>
<div class="container">
<h1>
FlexGrid Export with Paging
</h1>
<div class="form-inline">
<button class="btn btn-default" id="saveBtn">Export</button>
</div>
<br>
<div id="flexGrid"></div>
<div class="btn-group" id="pPager">
<button type="button" class="btn btn-default" data-action="fast-backward" id="pfb">
<span class="glyphicon glyphicon-fast-backward"></span>
</button>
<button type="button" class="btn btn-default" data-action="step-backward" id="psb">
<span class="glyphicon glyphicon-step-backward"></span>
</button>
<button type="button" class="btn btn-default" disabled style="width:100px" data-action="none" id="pn"></button>
<button type="button" class="btn btn-default" data-action="step-forward" id="psf">
<span class="glyphicon glyphicon-step-forward"></span>
</button>
<button type="button" class="btn btn-default" data-action="fast-forward" id="pff">
<span class="glyphicon glyphicon-fast-forward"></span>
</button>
</div>
</div>
JavaScript
var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
data = [];
for (var i = 0; i < 50; i++) {
data.push({
country: countries[i%countries.length],
downloads: Math.round(Math.random() * 20000),
sales: Math.round(Math.random() * 10000),
expenses: Math.round(Math.random() * 5000)
});
}
var pagerButtons = Array.prototype.slice.call(document.querySelectorAll('#pPager button'));
var cv = new wijmo.collections.CollectionView(data, {
pageSize:10
});
updatePager();
// create the FlexSheet control
var flexGrid = new wijmo.grid.FlexGrid('#flexGrid', {
itemsSource: cv
});
// update pager when user clicks a button
pagerButtons.forEach(function(el) {
el.addEventListener('click', function () {
updatePager(this.getAttribute('data-action'));
});
});
// disable/enable buttons and update display text for pager
function updatePager(action) {
// get buttons by id
var display = document.getElementById('pn'),
fb = document.getElementById('pfb'), sb = document.getElementById('psb'),
sf = document.getElementById('psf'), ff = document.getElementById('pff'),
enableBackwards = false,
enableForwards = false;
// handle pager operation based on button's attribute
switch (action) {
case 'fast-backward':
cv.moveToFirstPage();
break;
case 'step-backward':
cv.moveToPreviousPage();
break;
case 'step-forward':
cv.moveToNextPage();
break;
case 'fast-forward':
cv.moveToLastPage();
break;
}
// update the pager text
display.innerHTML = (cv.pageIndex + 1) + ' / ' + (cv.pageCount) + ' (Count: ' + cv.pageCount + ')';
// determine which pager buttons to enable/disable
enableBackwards = cv.pageIndex <= 0;
enableForwards = cv.pageIndex >= cv.pageCount - 1;
// enable/disable pager buttons
fb.disabled = enableBackwards;
sb.disabled = enableBackwards;
sf.disabled = enableForwards;
ff.disabled = enableForwards;
}
/* Export ...