140 lines
3.5 KiB
HTML
140 lines
3.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<link rel="stylesheet" href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css"/>
|
|
<link rel="stylesheet" href="../slick.grid.css" type="text/css"/>
|
|
<link rel="stylesheet" href="examples.css" type="text/css"/>
|
|
<style>
|
|
.slick-headerrow-column {
|
|
background: #87ceeb;
|
|
text-overflow: clip;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.slick-headerrow-column input {
|
|
margin: 0;
|
|
padding: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div style="position:relative">
|
|
<div style="width:600px;">
|
|
<div id="myGrid" style="width:100%;height:500px;"></div>
|
|
</div>
|
|
|
|
<div class="options-panel">
|
|
<h2>Demonstrates:</h2>
|
|
<ul>
|
|
<li>Using a fixed header row to implement column-level filters</li>
|
|
<li>Type numbers in textboxes to filter grid data</li>
|
|
</ul>
|
|
<h2>View Source:</h2>
|
|
<ul>
|
|
<li><A href="https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example-header-row.html" target="_sourcewindow"> View the source for this example on Github</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="../lib/firebugx.js"></script>
|
|
|
|
<script src="../lib/jquery-1.7.min.js"></script>
|
|
<script src="../lib/jquery-ui-1.8.16.custom.min.js"></script>
|
|
<script src="../lib/jquery.event.drag-2.2.js"></script>
|
|
|
|
<script src="../slick.core.js"></script>
|
|
<script src="../slick.dataview.js"></script>
|
|
<script src="../slick.grid.js"></script>
|
|
|
|
<script>
|
|
var dataView;
|
|
var grid;
|
|
var data = [];
|
|
var options = {
|
|
enableCellNavigation: true,
|
|
showHeaderRow: true,
|
|
headerRowHeight: 30,
|
|
explicitInitialization: true
|
|
};
|
|
var columns = [];
|
|
var columnFilters = {};
|
|
|
|
for (var i = 0; i < 10; i++) {
|
|
columns.push({
|
|
id: i,
|
|
name: String.fromCharCode("A".charCodeAt(0) + i),
|
|
field: i,
|
|
width: 60
|
|
});
|
|
}
|
|
|
|
|
|
function filter(item) {
|
|
for (var columnId in columnFilters) {
|
|
if (columnId !== undefined && columnFilters[columnId] !== "") {
|
|
var c = grid.getColumns()[grid.getColumnIndex(columnId)];
|
|
if (item[c.field] != columnFilters[columnId]) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
$(function () {
|
|
for (var i = 0; i < 100; i++) {
|
|
var d = (data[i] = {});
|
|
d["id"] = i;
|
|
for (var j = 0; j < columns.length; j++) {
|
|
d[j] = Math.round(Math.random() * 10);
|
|
}
|
|
}
|
|
|
|
dataView = new Slick.Data.DataView();
|
|
grid = new Slick.Grid("#myGrid", dataView, columns, options);
|
|
|
|
|
|
dataView.onRowCountChanged.subscribe(function (e, args) {
|
|
grid.updateRowCount();
|
|
grid.render();
|
|
});
|
|
|
|
dataView.onRowsChanged.subscribe(function (e, args) {
|
|
grid.invalidateRows(args.rows);
|
|
grid.render();
|
|
});
|
|
|
|
|
|
$(grid.getHeaderRow()).delegate(":input", "change keyup", function (e) {
|
|
var columnId = $(this).data("columnId");
|
|
if (columnId != null) {
|
|
columnFilters[columnId] = $.trim($(this).val());
|
|
dataView.refresh();
|
|
}
|
|
});
|
|
|
|
grid.onHeaderRowCellRendered.subscribe(function(e, args) {
|
|
$(args.node).empty();
|
|
$("<input type='text'>")
|
|
.data("columnId", args.column.id)
|
|
.val(columnFilters[args.column.id])
|
|
.appendTo(args.node);
|
|
});
|
|
|
|
grid.init();
|
|
|
|
dataView.beginUpdate();
|
|
dataView.setItems(data);
|
|
dataView.setFilter(filter);
|
|
dataView.endUpdate();
|
|
})
|
|
</script>
|
|
</body>
|
|
</html>
|