Lernen Sie einige Dinge in Jquery und ergänzen und verbessern Sie sie schließlich.
Diese Methode ist bei Verwendung der Bootstrap-Tabelle sehr nützlich Der aktuell ausgewählte Knoten.
Die aktuellen Zeilen enthalten viele Daten, aber ich benötige derzeit nur den Wert der ID.
$.map(data,function(item,index){return XXX}) //使用的总结: //把一个数组,按照新的方式进行组装返回,和原来的数组不一样。 //遍历data数组中的每个元素,并按照return中的计算方式 形成一个新的元素,放入返回的数组中 var b = $.map( [55,1,2], function( item,index ) { return { "label": item, "value": index } }); alert(b[0].label +" "+ b[0].value); //输出为 55 0
2. Mein Hintergrund ist mit SpringMVC geschrieben. Während dieser Zeit bin ich auch auf viele Probleme bei der Paging-Verarbeitung gestoßen.
Ich habe Offline-Abfragen verwendet , aber ich habe die Methode „execute()“ verwendet und kann nicht in die folgende Methode konvertiert werden. Ich habe trotzdem lange nach Baidu gesucht heraus, dass dieses Problem verursacht wurde
/** * Get an executable instance of <literal>Criteria</literal>, * to actually run the query. */ public Criteria getExecutableCriteria(Session session) { impl.setSession( ( SessionImplementor ) session ); return impl; }
return (PageBean) getHibernateTemplate().executeWithNativeSession(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); ............................ }Im Hintergrund stimmten die von mir zurückgegebenen Daten und Formate nicht überein mit Das Format in BootStrap ist sowieso etwas anders
{ "success": true, "message": null, "data": { "pageSize": 15, "rows": [ { "userName": "333", "userType": 333, "password": "333", "id": 11, "indexcode": "333" }, { "userName": "3", "userType": 333, "password": "333", "id": 5, "indexcode": "33333" } ....... ], "total": 17, "totalPage": 2, "page": 0, "hasPreviousPage": true, "hasNextPage": true, "lastPage": false, "firstPage": false } }Hauptsächlich, weil ich hier die einheitliche Rückgabeschnittstelle ActionResult verwende, die das Schreiben von Formaten erleichtert , einheitliches Backend
** * Created by JetWang on 2016/10/1. */ public class ActionResult { private boolean success; private String message; private Object data; public ActionResult(){ } public ActionResult(boolean success){ this(success, null, null); } ............ }Werfen wir einen Blick auf die Wirkung des Frontends
Frontend-Seite
<%@ include file="./common/common.jsp"%> //什么公用的bootstrapt ,JQuery啊之类的引用放进去处理了 <script src="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table.js" type="text/javascript"></script> <script src="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table-locale-all.js" type="text/javascript"> </script> <link rel="stylesheet" href="<%=baseUrl%>/libs/bootstrap-table/dist/bootstrap-table.css" type="text/css"> //这里就是容器中放置table的 <div class="container"> <table id="table" data-url="/cms/UserInfo/userInfoPage">//使用的路径,后台请求的URL </table> </div>Erklärung des wichtigeren JS-Codes
jQuery(document).ready(function() { //这里你可以使用各种法师,也可以使用seajs前端模块化工具 下面放置我们的js代码就好了 });
Was das Umschreiben der folgenden Konfigurationsdateien und einiger Ereignisse betrifft, können Sie die Dokumentation überprüfen oder Ihren Quellcode selbst überprüfen
Sie können ihn hier umschreiben~~ und erweitern es wieder abdecken!
BootstrapTable.DEFAULTS = { classes: 'table table-hover', locale: undefined, height: undefined, undefinedText: '-', sortName: undefined, sortOrder: 'asc', sortStable: false, striped: false, columns: [[]], data: [], dataField: 'rows', method: 'get', url: undefined, ajax: undefined, cache: true, contentType: 'application/json;charset=UTF-8',//这里我就加了个utf-8 dataType: 'json', ajaxOptions: {}, queryParams: function (params) {//这个是设置查询时候的参数,我直接在源码中修改过,不喜欢offetset 我后台用的 是pageNo. 这样处理就比较的满足我的要求,其实也可以在后台改,麻烦! return params; }, queryParamsType: 'limit', // undefined (这里是根据不同的参数,选择不同的查询的条件) responseHandler: function (res) {//这里我查看源码的,在ajax请求成功后,发放数据之前可以对返回的数据进行处理,返回什么部分的数据,比如我的就需要进行整改的! return res; }, pagination: false, onlyInfoPagination: false, sidePagination: 'client', // client or server totalRows: 0, // server side need to set pageNumber: 1, pageSize: 10, pageList: [10, 25, 50, 100], paginationHAlign: 'right', //right, left paginationVAlign: 'bottom', //bottom, top, both paginationDetailHAlign: 'left', //right, left paginationPreText: '‹', paginationNextText: '›', search: false, searchOnEnterKey: false, strictSearch: false, searchAlign: 'right', selectItemName: 'btSelectItem', showHeader: true, showFooter: false, showColumns: false, showPaginationSwitch: false,//展示页数的选择? showRefresh: false, showToggle: false, buttonsAlign: 'right', smartDisplay: true, escape: false, minimumCountColumns: 1, idField: undefined, uniqueId: undefined, cardView: false, detailView: false, detailFormatter: function (index, row) { return ''; }, trimOnSearch: true, clickToSelect: false, singleSelect: false, toolbar: undefined, toolbarAlign: 'left', checkboxHeader: true, sortable: true, silentSort: true, maintainSelected: false, searchTimeOut: 500, searchText: '', iconSize: undefined, buttonsClass: 'default', iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome) icons: { paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down', paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up', refresh: 'glyphicon-refresh icon-refresh', toggle: 'glyphicon-list-alt icon-list-alt', columns: 'glyphicon-th icon-th', detailOpen: 'glyphicon-plus icon-plus', detailClose: 'glyphicon-minus icon-minus' }, customSearch: $.noop, customSort: $.noop, rowStyle: function (row, index) { return {}; }, rowAttributes: function (row, index) { return {}; }, footerStyle: function (row, index) { return {}; }, onAll: function (name, args) { return false; }, onClickCell: function (field, value, row, $element) { return false; }, onDblClickCell: function (field, value, row, $element) { return false; }, onClickRow: function (item, $element) { return false; }, onDblClickRow: function (item, $element) { return false; }, onSort: function (name, order) { return false; }, onCheck: function (row) { return false; }, onUncheck: function (row) { return false; }, onCheckAll: function (rows) { return false; }, onUncheckAll: function (rows) { return false; }, onCheckSome: function (rows) { return false; }, onUncheckSome: function (rows) { return false; }, onLoadSuccess: function (data) { return false; }, onLoadError: function (status) { return false; }, onColumnSwitch: function (field, checked) { return false; }, onPageChange: function (number, size) { return false; }, onSearch: function (text) { return false; }, onToggle: function (cardView) { return false; }, onPreBody: function (data) { return false; }, onPostBody: function () { return false; }, onPostHeader: function () { return false; }, onExpandRow: function (index, row, $detail) { return false; }, onCollapseRow: function (index, row) { return false; }, onRefreshOptions: function (options) { return false; }, onRefresh: function (params) { return false; }, onResetView: function () { return false; } };Schauen Sie sich das oben an, ich weiß im Grunde, wie man es macht und schreibt! Tatsächlich habe ich mich vorher nicht getraut, so zu spielen, aber mein Lehrer hat mir das Spielen während meines vorherigen Praktikums beigebracht, also habe ich es gewagt, dass ich diese Dinge gut spielen kann!
function initTable() { $table.bootstrapTable({ striped: true, //表格显示条纹 pagination: true, //启动分页 pageSize: 15, //每页显示的记录数 pageNumber:1, //当前第几页 pageList: [10, 15, 20, 25], //记录数可选列表 search: false, //是否启用查询 showColumns: true, //显示下拉框勾选要显示的列 showRefresh: true, //显示刷新按钮 sidePagination: "server", //表示服务端请求 //设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder //设置为limit可以获取limit, offset, search, sort, order responseHandler:function(res){ //远程数据加载之前,处理程序响应数据格式,对象包含的参数: 我们可以对返回的数据格式进行处理 //在ajax后我们可以在这里进行一些事件的处理 return res.data; }, queryParamsType : "undefined", queryParams: function queryParams(params) { //设置查询参数 var param = { //这里是在ajax发送请求的时候设置一些参数 params有什么东西,自己看看源码就知道了 pageNo: params.pageNumber, pageSize: params.pageSize }; return param; }, onLoadSuccess: function(data){ //加载成功时执行 alert("加载成功"+data); }, onLoadError: function(){ //加载失败时执行 layer.msg("加载数据失败", {time : 1500, icon : 2}); }, height: getHeight(), columns: [ { field: 'state', checkbox: true, align: 'center', valign: 'middle' }, { title: 'ID', field: 'id', align: 'center', valign: 'middle' }, { field: 'userName', title: 'UserName', sortable: true, footerFormatter: totalNameFormatter, align: 'center' }, { field: 'userType', title: 'UserType', sortable: true, align: 'center' }, { field: 'password', title: 'UserPass', sortable: true, align: 'center' },{ field: 'indexcode', title: 'Indexcode', sortable: true, align: 'center' },{ field: 'operate', title: 'Item Operate', align: 'center', events: operateEvents, formatter: operateFormatter } ] });Der obige FooterFormatter und Formatter sind Ereignisse, die die Anzeige der aktuellen Spalte verarbeiten. Das Dokument lautet wie folgt:
Formatter:
Der Kontext (dieses) ist die Zellenformatierungsfunktion, die drei Parameter annimmt: Wert: der Zeilendatensatzindex:
Der Kontext (dieser). ) ist das Spaltenobjekt.
Daten: Array aller Datenzeilen, die die Funktion in der Fußzeilenzelle anzeigen soll Spalte Die Anzeige
ist wie folgt: Einer Zelle werden zwei Schaltflächen hinzugefügt
function operateFormatter(value, row, index) { return [ '<a class="like" href="javascript:void(0)" title="Like">', '<i class="glyphicon glyphicon-heart"></i>', '</a> ', '<a class="remove" href="javascript:void(0)" title="Remove">', '<i class="glyphicon glyphicon-remove"></i>', '</a>' ].join(''); }Hier können Sie auch eine Ereignisverarbeitung hinzufügen
<%--{ title: '操作', field: 'id', align: 'center', formatter:function(value,row,index){ var e = '<a href="#" rel="nofollow" target="_blank" mce_href="#" rel="nofollow" target="_blank" onclick="edit(\''+ row.id + '\')">编辑</a> '; var d = '<a href="#" rel="nofollow" target="_blank" mce_href="#" rel="nofollow" target="_blank" onclick="del(\''+ row.id +'\')">删除</a> '; return e+d; 也可以这样处理事件的 } }--%>Das offizielle Dokument besagt, dass Verarbeitungsereignisse wie folgt behandelt werden könnenDer Zellenereignis-Listener nimmt bei Verwendung der Formatierungsfunktion vier Parameter an : Ereignis: das jQuery-Ereignis. Wert: der Zeilendatensatz.
Beispielcode:
{ field: 'operate', title: 'Item Operate', align: 'center', events: operateEvents, formatter: operateFormatter } function operateFormatter(value, row, index) { return [ '<a class="like" href="javascript:void(0)" title="Like">', '<i class="glyphicon glyphicon-heart"></i>', '</a> ', '<a class="remove" href="javascript:void(0)" title="Remove">', '<i class="glyphicon glyphicon-remove"></i>', '</a>' ].join(''); } window.operateEvents = { 'click .like': function (e, value, row, index) { alert('You click like action, row: ' + JSON.stringify(row)); }, 'click .remove': function (e, value, row, index) { $table.bootstrapTable('remove', { field: 'id', values: [row.id] }); } };
Verarbeitung der im System vorhandenen Ereignisse. Im Dokument heißt es
$('#table').bootstrapTable({ onEventName: function (arg1, arg2, ...) { // ... } }); $('#table').on('event-name.bs.table', function (e, arg1, arg2, ...) { // ... }); //这个名字文档中很多! onAll all.bs.table name, args Fires when all events trigger, the parameters contain: name: the event name, args: the event data.
Behandeln Sie einige Methoden, z. B. das aktuelle Wie Es wurden viele Zeilen ausgewählt, alle auswählen usw.
//The calling method syntax: $('#table').bootstrapTable('method', parameter); //1 当前选择选的框框的id getSelections none Return selected rows, when no record selected, an empty array will return. //2.全选 getAllSelections none Return all selected rows contain search or filter, when no record selected, an empty array will return. $table.on('all.bs.table', function (e, name, args) { console.log(name, args); }); //3.删除 前台的数据,不需要从后台重新加载 remove params Remove data from table, the params contains two properties: field: the field name of remove rows. values: the array of values for rows which should be removed.
...viele, viele Dinge!
Eine Schaltfläche zum Löschen, um alle ausgewählten Ereignisse zu löschen! Ist es nicht toll!
function getIdSelections() { return $.map($table.bootstrapTable('getSelections'), function (row) { return row.id }); } $remove.click(function () { var ids = getIdSelections(); $table.bootstrapTable('remove', { field: 'id', values: ids }); $remove.prop('disabled', true); });