<!DOCTYPE HTML> <html> <head> <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"/> <link rel="stylesheet" href="../plugins/slick.headerbuttons.css" type="text/css"/> <style> .icon-highlight-off, .icon-highlight-on { background-image: url(../images/bullet_blue.png); } .icon-highlight-off { opacity: 0.2; } .negative-highlight { background: red; } </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"> <p> This example demonstrates using the <b>Slick.Plugins.HeaderButtons</b> plugin to easily add buttons to column headers. These buttons can be specified directly in the column definition, and are very easy to configure and use. </p> <h2>View Source:</h2> <ul> <li><A href="https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example-plugin-headerbuttons.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.grid.js"></script> <script src="../plugins/slick.headerbuttons.js"></script> <script> var grid; var data = []; var options = { enableCellNavigation: true }; var columns = []; var columnsWithHighlightingById = {}; // Set up some test columns. for (var i = 0; i < 10; i++) { columns.push({ id: i, name: String.fromCharCode("A".charCodeAt(0) + i), field: i, width: 90, sortable: true, formatter: highlightingFormatter, header: { buttons: [ { cssClass: "icon-highlight-off", command: "toggle-highlight", tooltip: "Highlight negative numbers." } ] } }); } // Set multiple buttons on the first column to demonstrate overflow. columns[0].name = "Resize me!"; columns[0].header = { buttons: [ { image: "../images/tag_red.png" }, { image: "../images/comment_yellow.gif" }, { image: "../images/info.gif" }, { image: "../images/help.png" } ] }; // Set a button on the second column to demonstrate hover. columns[1].name = "Hover me!"; columns[1].header = { buttons: [ { image: "../images/help.png", showOnHover: true, tooltip: "This button only appears on hover.", handler: function(e) { alert('Help'); } } ] }; // Set up some test data. 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) - 5; } } function highlightingFormatter(row, cell, value, columnDef, dataContext) { if (columnsWithHighlightingById[columnDef.id] && value < 0) { return "<div style='color:red; font-weight:bold;'>" + value + "</div>"; } else { return value; } } $(function () { grid = new Slick.Grid("#myGrid", data, columns, options); var headerButtonsPlugin = new Slick.Plugins.HeaderButtons(); headerButtonsPlugin.onCommand.subscribe(function(e, args) { var column = args.column; var button = args.button; var command = args.command; if (command == "toggle-highlight") { if (button.cssClass == "icon-highlight-on") { delete columnsWithHighlightingById[column.id]; button.cssClass = "icon-highlight-off"; button.tooltip = "Highlight negative numbers." } else { columnsWithHighlightingById[column.id] = true; button.cssClass = "icon-highlight-on"; button.tooltip = "Remove highlight." } grid.invalidate(); } }); grid.registerPlugin(headerButtonsPlugin); }); </script> </body> </html>