bkjxxxw/WebContent/static/ace/docs/sections/plugins/tables.html

190 lines
6.5 KiB
HTML

<section>
<h1 class="blue" data-id="#plugins/tables"><i class="ace-icon fa fa-table grey"></i> Tables & Grids</h1>
<div class="hr hr-double hr32"></div>
<!-- #section:plugins/tables -->
<div class="help-content">
<h3 class="info-title smaller" data-id="#plugins/tables.datatables">dataTables</h3>
<!-- #section:plugins/tables.datatables -->
<div class="info-section">
<ul class="info-list list-unstyled">
<li>
dataTables is a table plugin with many options and free or premium addons.
<br />
For more details see plugin's page: <a href="http://datatables.net/">datatables.net</a>
</li>
<li>
To use it, you should include:
<br />
<code>assets/js/dataTables/jquery.dataTables.js</code>
<br />
<code>assets/js/dataTables/jquery.dataTables.bootstrap.js</code>
</li>
<li>
To enable or disable pagination buttons such as 'next', 'prev', 'last' and 'first',
you should edit <code>assets/js/dataTables/jquery.dataTables.bootstrap.js</code>
and modify the part that says <span class="green">//Pagination Buttons</span>
</li>
<li>
A basic example is as follows:
<pre data-language="javascript">
var myTable =
$('#my-table')
.dataTable({
/**
sScrollY: "200px",//enable vertical scrolling
sScrollX: "100%",
sScrollXInner: "120%",//enable horizintal scrolling with its content 120% of its container
bScrollCollapse: true,
*/
bAutoWidth: false,//for better responsiveness
aoColumns": [
{ "bSortable": false },
null, null,null, null, null,
{ "bSortable": false }
]
})
</pre>
<code>aoColumns</code> is an array containing info and options for each table column
and its element count should match the number of columns.
<br />
For more information about <code>aoColumns</code> and other options, please see the plugin's page.
</li>
<li>
If you want to apply horizontal scrolling (sScrollX) on a bordered table (<code>.table-bordered</code>)
you can wrap the table inside a <code>.dataTables_borderWrap</code> element first:
<pre data-language="javascript">
var myTable =
$('#my-table')
.wrap("&lt;div class='dataTables_borderWrap' /&gt;")
.dataTable({
//options
});
</pre>
</li>
<li>
"buttons" and "select" extensions are also included.
<br />
To use "buttons" you should include the following files:
<br />
<code>assets/js/dataTables/extensions/buttons/dataTables.buttons.js</code>
<br />
<code>assets/js/dataTables/extensions/buttons/buttons.print.js</code> (for print button)
<br />
<code>assets/js/dataTables/extensions/buttons/buttons.html5.js</code> (for html5 buttons)
<br />
<code>assets/js/dataTables/extensions/buttons/buttons.flash.js</code> (for flash buttons)
<br />
<code>assets/js/dataTables/extensions/buttons/buttons.colVis.js</code>(for column visibility button)
<br />
<br />
To use "select" you should include the following file:
<br />
<code>assets/js/dataTables/extensions/select/dataTables.select.js</code>
</li>
<li>
If you want "html5" buttons to export table data to "PDF" or "Excel", you need extra plugins.
<br />
Please see <a href="https://datatables.net/extensions/buttons/examples/html5/simple.html" target="_blank">https://datatables.net/extensions/buttons/examples/html5/simple.html</a> for more info.
</li>
<li>
For an example please see:
<code data-open-file="javascript" class="open-file"><span class="brief-show">mustache/app/views/assets/scripts/</span>tables.js</code>
<br />
Note the changes dynamically done to make the extensions styling look like Ace.
</li>
</ul>
</div>
<!-- /section:plugins/tables.datatables -->
<h3 class="info-title smaller" data-id="#plugins/tables.jqgrid">jqGrid</h3>
<!-- #section:plugins/tables.jqgrid -->
<div class="info-section">
<ul class="info-list list-unstyled">
<li>
jqGrid is a table and grid plugin with advanced functionality and many different options
<br />
Please make sure you see its page, examples and documentation at:
<a href="http://www.trirand.com">www.trirand.com</a>
</li>
<li>
You can also a build a custom version depending on your needs:
<a href="http://www.trirand.com/blog/?page_id=6">http://www.trirand.com/blog/?page_id=6</a>
</li>
<li>
To use it, you should include:
<br />
<code>assets/css/ui.jqgrid.css</code>
<br />
<code>assets/js/jqGrid/jquery.jqGrid.src.js</code>
</li>
<li>
Please note that in our demo example,
data source is a local static table but you can retrieve data dynamically from server:
<br />
<code data-open-file="javascript" class="open-file"><span class="brief-show">mustache/app/views/assets/scripts/</span>jqgrid.js</code>
</li>
<li>
jqGrid has many options and you can choose a different icon for different buttons, etc.
<br />
But sometimes you need to dynamically style buttons, icons, checkboxes using Javascript
for example when search dialog is displayed.
</li>
<li>
If you want to style checkboxes dynamically using Javascript, please note that you shouldn't
wrap them inside <code>label</code> or jqGrid plugin will not send your data to server properly:
<pre data-language="javascript">
//inside colModel we have a checkbox
/**{name: 'stock', index: 'stock', width:70, editable: true, edittype: 'checkbox',
editoptions: {value:"Yes:No"}, unformat: aceSwitch},*/
//aceSwitch is the function which styles the checkbox
function aceSwitch( cellvalue, options, cell ) {
setTimeout(function(){
$(cell) .find('input[type=checkbox]')
.addClass('ace ace-switch ace-switch-5')
.after('&lt;span class="lbl">&lt;/span>');
}, 0);
}
</pre>
</li>
<li>
To make the grid responsive, you can use the following code:
<pre data-language="javascript">
var parent_column = $(grid_selector).closest('[class*="col-"]');
$(window).on('resize.jqGrid', function () {
$(grid_selector).jqGrid( 'setGridWidth', $(".page-content").width() );
})
//optional: resize on sidebar collapse/expand and container fixed/unfixed
$(document).on('settings.ace.jqGrid' , function(ev, event_name, collapsed) {
if( event_name === 'sidebar_collapsed' || event_name === 'main_container_fixed' ) {
$(grid_selector).jqGrid( 'setGridWidth', parent_column.width() );
}
})
</pre>
</li>
</ul>
</div>
<!-- /section:plugins/tables.jqgrid -->
</div>
<!-- /section:plugins/tables -->
</section>