Komponen tabel asli Bootstrap hanya dapat memenuhi tampilan data sederhana dan tidak dapat memenuhi persyaratan operasional yang lebih banyak. Tentu saja, Anda dapat menemukan komponen tabel berbasis bootstrap yang disebut "DataTables-1.10.11", tetapi jika Anda tidak tahu banyak tentang API, itu akan menyakitkan untuk digunakan. Namun, jika Anda memilih untuk menggunakan JQGrid, maka tutorial ini akan membawa Anda solusi ke tabel operasional ini.
1. Tampilan Efek
Oke, tunjukkan saja gambar ini. Saya yakin Anda telah jatuh cinta dengan versi bootstrap JQGrid. Ini sangat kompatibel dengan bootstrap dan sempurna. Tentu saja, ini membutuhkan beberapa perubahan pada JQGrid dari alasan dan merangkum komponen.
2. Unduh Sumber Daya
Bagaimanapun, saya suka berbagi. Anda dapat mengunduh kode komponen JQGrid dari situs web resmi JQGrid, tetapi membutuhkan beberapa perubahan setelah diunduh. Kemudian saya langsung mengunggah JQGrid yang dimodifikasi ke Git, dan Anda hanya perlu mengimpor file yang disediakan ke proyek Anda yang sesuai.
Selain itu, Anda juga perlu mengunduh jQuery-ui-1.10.0.custom.css , dan saya tidak akan memberikan alamat unduhan, tetapi saya yakin Anda pasti akan menemukannya. Bahkan jika Anda menggunakan gadis Baidu yang sering mengalami kecelakaan, Anda dapat menemukannya.
3. Tentang apa artikel ini
Sejak saya membuat kelompok QQ, beberapa siswa telah bergabung dengan grup dalam "aliran yang tak henti -hentinya", tetapi saya juga menemukan bahwa langkah pertama dalam kelompok datang kepada saya untuk meminta demo atau kode proyek. Saya tidak suka ini. Lakukan sendiri, terapkan yang berikut dan ubahnya, dan itu akan menjadi hal Anda sendiri. Anda jelas tidak akan mendapatkan lebih banyak bantuan dari menyalin kode saya sepenuhnya. Saya berharap bahwa siswa di atas akan mengambil inisiatif ketika mereka belajar.
Setelah mengatakan omong kosong kecil di atas, mari kita kembali ke intinya dan berbicara tentang apa yang terutama dibicarakan blog kami dan apa kunci untuk menyematkan jqgrid di bootstrap. Saya merangkumnya sebagai berikut:
Skema Tata Letak JQGrid di Bootstrap Parameter Konstruktif JQGrid Sendiri JQGrid Modular JQGRID OPERASI DALAM BOOTSTRAP
Dicelangi secara tentatif menjadi bagian -bagian di atas untuk diilustrasikan, tetapi harus dicatat bahwa karena keterbatasan ruang, hanya ide dan beberapa kode yang disediakan di blog.
①. Rencana tata letak JQGrid di Bootstrap
<! Doctype html> <html lang = "zh-cn"> <%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ incert file = "/komponen/common/taglib.jsp"%> termasuk@ include = "/components/common/taglib.jsp"%> File = "/komponen/umum/csslib.jsp"%> <adep> <tautan type = "text/css" rel = "stylesheet" href = "$ {ctx} /css/deal/my_pay_list.css"/</head> <body> <ver> <Form id = "jq =" jq action="${ctx}/deal/dataablePayDealOrdersList" method="post"> <div> <div> <label for="name">Project name: </label> <div> <input type="text" name="name" id="name" placeholder="Please enter the project name" value="" /> </div> </div> </div> <div> <div> <button type="button" ID = "SearchBtn"> Cari </button> </div> </div> <div> <div> <table id = "pageGrid" rel = "jqgridform"> </boable> <v id = "pageGridPager"> </div> </div> </form> </div> <%@ include file = "/components/jcrips/jcks. src = "$ {ctx} /js/deal/my_pay_list.js"> </script> </body> </html>Proyek setiap orang sangat bervariasi. Dalam kode yang terdaftar, kami hanya fokus pada bagian JQGrid:
id="jqgridForm" , di sini kita memiliki formulir dengan lapisan kondisi pencarian untuk jqGrid, yaitu bagian pencarian yang tercantum pada rendering. Saat mengklik tombol pencarian, kondisi kueri dari bidang formulir Form diserahkan ke pengontrol, dan data yang diperoleh diperoleh. id="searchBtn" , menentukan tombol pencarian, yang akan digunakan nanti pada modularitas. <table id="pageGrid" rel="jqgridForm"></table> <div id="pageGridPager"></div> Tentukan elemen tabel JQGrid dan elemen footer JQGrid. Aturan yang digunakan oleh proyek saya untuk sementara setuju dengan aturan ini, dan Anda juga dapat memiliki aturan Anda sendiri. Dengan menentukan ID formulir oleh Rel, lebih mudah untuk menggunakan bentuk pengambilan tabel. ②, parameter konstruktif JQGrid sendiri
Membangun parameter, saya mengekstraknya ke my_pay_list.js di ①.
$ (function () {var jqOption = {DataType: "xml", mType: "post", shrinktofit: true, viewrecords: false, rownumbers: false, autowidth: true, tinggi: "100%", colnames: ['id', 'status', 'Informasi proyek', ',', ',' NOMOR ',' ID ',' ID ',' NOMOR ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID ',' ID 'NOUDE,' quantity', 'order status', 'operation'], colModel : [ { name : 'id', index : 'id', hidden : true }, { name : 'status', index : 'status', hidden : true }, { name : 'image_str', index : 'image_str', width : 140, resizable : false, sortable : false, formatter : function(cellvalue, options, rowObject) { if (CellValue == 'Total biaya pembayaran:') {return cellValue; ParseInt ($ (Rowobject) .find ("Status"). Teks ()); {return '<a target = "_ blank" href = "' + common.ctx + '/deal/showdealor/' + id + '"> Rincian </a>'; ], xmlReader : { repeatitems : false, root : "PageGrid", row : "map", page : 'page', total : 'total', records : 'records', id : 'ID' }, rowNum : 50, rowList : [ 50, 100, 200, 300 ], pager : "#pageGridPager", footerrow : true, loadError : YUNM.ajaxError, gridComplete : function () {var $ form = $ ("#" + $ ("#pageGrid"). attr ("rel")); $ .AJAX ({type: $ form.method || 'Post', URL: Common.ctx + "/deal/getallorded", data: $ form.serializeArray (), datatipe: " $ ("#PageGrid"). FooterData ("Set", {Image_str: "Total biaya pembayaran:", order_price: json.message}), kesalahan: yunm.ajaxerror}); } // dialog jika ($ .fn.Ajaxtodialog) {$ ("a [target = dialog]", $ ("#pageGrid")). Ajaxtodialog ();Siswa yang tidak terbiasa dengan JQGrid sama sekali merekomendasikan membaca demo JQGrid dan dokumen resmi JQGrid terlebih dahulu. Tentu saja, bagi siswa yang sudah akrab dengan JQGrid, Doc dan demo jelas merupakan bacaan yang harus dibaca.
Ada banyak atribut yang tercantum dalam file di atas. Saya tidak akan terlalu banyak memperkenalkan JQGrid. Tema utama artikel ini adalah untuk memperkenalkan cara menyematkan jqgrid ke dalam bootstrap. Poin kuncinya adalah tidak memperkenalkan JQGrid. Saya hanya akan memperkenalkan beberapa poin penting:
formatter: function(cellvalue, options, rowObject) { , Formatters masih sangat sering digunakan, sehingga sangat penting untuk mendapatkan nilai sel yang sesuai. JQGRID saya menggunakan format data XML (DataType: "XML"), sehingga Anda dapat menemukan nilai kolom deal_id yang sesuai melalui $(rowObject).find("deal_id").text() . xmlReader : { repeatitems : false, root : "PageGrid", Perhatikan nilai parameter di xmlreader. Pada pengantar berikutnya, operasi data JQGRID akan diperkenalkan secara rinci, yang terkait dengan latar belakang enkapsulasi data XML. $("#pageGrid").footerData("set", {image_str : "支付总花费:", order_price : json.message}); , Mengenai metode footerData, juga sangat nyaman untuk digunakan, dan efeknya dapat dirujuk sebagai efeknya. initEnv(jqOption); metode. Setelah halaman, kami meneruskan parameter inisialisasi JQGrid ke metode InitiNV. Dalam modularisasi JQGRID di Bootstrap berikutnya, kami akan memperkenalkan metode InitiNV. ③, modularitas jqgrid di bootstrap
Dalam ②, kami perhatikan metode InitiNV, jadi metode ini dibangun dengan pekerjaan enkapsulasi modular khusus untuk JQGrid.
Metode initenv
function initenv (jqOption) {$ (window) .resize (function () {initlayout ();}); initui (null, jqoption);}Dalam metode ini, kita akan melihat metode initlayout dan metode initUI, dan konten spesifik akan diperkenalkan nanti.
initlayout
function initlayout () {$ ("Tabel [rel = jqGridForm]"). masing -masing (function () {var rel = $ (this) .attr ("rel"); if (rel) {var $ form = $ ("#" + rel); var tableWidth = $ form.width (); $ (ini) .sgridwidth (tabelwidth = $ form.width (); $ (ini) .sgridwidth (tabelwidth, tabel); $};Yaitu, ketika jendela ditingkatkan, kami menggambar ulang lebar untuk JQGrid untuk beradaptasi dengan tata letak responsif Bootstrap. Metode yang digunakan adalah metode SetGridWidth dari JQGrid.
initui
fungsi initUi (_box, jqoption) {var $ p = $ (_ box || dokumen); if (jqOption) {yunm.debug ("initializeJqGrid"); var $ form = $ ("#" + $ ("#pageGrid"). attr ("rel")); Yunm.debug (yunm.array2obj ($ form.serializeArray ())); // inisialisasi var op = $ .extend ({url: $ form.attr ("action"), postdata: yunm.array2obj ($ form.serializeArray ()),}, jqOption); $ ("#PageGrid"). JQGrid (OP); // Tombol Cari $ ("#SearchBtn", $ Form) .click (function () {$ ("#pageGrid"). JqGrid ('setGridParam', {url: $ form.attr ("action"), halaman: 1, postdata: yunm.array2obj ($ form.serializeArray () ()) ()); $ ("#pageGrid"). Trigger ("ReloadGrid"); // Toolbar, hapus sudut bulat tombol $ (". Btn", $ form) .each (function () {var $ this = $ (this); $ this.css ({"border-radius": "0px", "border-bottom": "0",});}); }} array2obj: function (array) {var params = $ ({}); $ .each (array, function (i) {var $ param = $ (this) [0]; params.attr ($ param.name, $ param.Value);}); return params [0];},Jika Anda telah membaca seri artikel saya sebelumnya, Anda tidak akan terlalu asing dengan metode initUi. Teman -teman yang akrab dengan DWZ secara alami tidak akan tidak terbiasa dengan itu. Sebagian besar templat dalam proyek saya masih bergantung pada DWZ. Terima kasih kepada para senior ini.
var $form = $("#" + $("#pageGrid").attr("rel")); Karena kami mengaitkan kondisi formulir formulir pada JQGrid, kami bisa mendapatkan objek formulir di sini. Ketika kita mendapatkan objek Formulir Formulir, kita secara alami akan mendapatkan nilai bidang pencarian ( $form.serializeArray() ). Setelah Anda mendapatkan nilai bidang pencarian dari formulir formulir, Anda perlu melakukan beberapa pemrosesan saat ini. Kita tahu bahwa ketika JQGrid meneruskan parameter ke pengontrol, perlu untuk mengirim paging dan diurutkan bidang terkait (halaman, baris, sord, sidx). Metode yang digunakan adalah $("#pageGrid").jqGrid({postData:xxx}); Biasanya, ketika kita mengirim formulir formulir, kita hanya perlu menggunakan $form.serializeArray() , tetapi jika pada saat ini, cukup ganti xxx dengan $form.serializeArray() , maka bidang paging dan diurutkan terkait (halaman, baris, Sord, SIDX) tidak akan diperoleh di dalam pengontrol. Ini adalah konflik. Bagaimana cara menghadapinya saat ini? Solusinya adalah dengan merobohkan data formulir (metode array2obj), dan kemudian kami mengirim nilai bidang pencarian bersama dengan bidang paging dan var op =$.extend({url:$form.attr("action"),postData:YUNM.array2obj($form.serializeArray()),},jqOption);$("#pageGrid").jqGrid(op); yang relevan var op =$.extend({url:$form.attr("action"),postData:YUNM.array2obj($form.serializeArray()),},jqOption);$("#pageGrid").jqGrid(op); $("#searchBtn", $form).click Reload data JQGrid dengan merangkum acara klik. $(".btn", $form).each(function() { Metode di sini akan mengambil tombol untuk mendelai sudut agar lebih cocok untuk JQGrid, lihat rendering. ④, operasi data JQGrid
Bagian operasi data, saya pikir, termasuk lewat parameter pencarian, lewat parameter pagination, dan penulisan pernyataan SQL.
Mengenai passing parameter, enkapsulasi parameter front-end telah diperkenalkan di ③. Mari kita lihat bagaimana data diproses di pengontrol.
Pertama, mari kita tentukan PageGrid, yang merupakan sumber data XMLreader di JQGrid.
Paket com.honzh.common.page; import java.util.list; import com.thoughtworks.xstream.annotations.xstreamalias; @xstreamalias ("pageGrid")@SuppressWarnings ("RawTypes") PageGrid kelas publik {private int page; total int pribadi; catatan int pribadi; data daftar pribadi; public int getPage () {return this.page; } public void setPage (int halaman) {this.page = halaman; } public int getTotal () {return this.total; } public void setTotal (int total) {this.total = total; } public int getRecords () {return this.records; } public void setRecords (int records) {this.records = Records; } daftar publik getData () {return this.data; } public void setData (data daftar) {this.data = data; }}Xstream.jar diperlukan dalam proyek dan unduh sendiri.
XStreamComponent.java
Paket com.honzh.common.page; impor org.apache.commons.lang.stringutils; import com.thoughtworks.xstream.xstream; import com.thoughtworks.xstream.converters.converter; import com.thoughtworks.xstream.io.xml.domdriver; com.thoughtworks.xstream.mapper.xstream11xmlfriendlyMapper; kelas publik xStreamComponent {private xstream xstream; public static xStreamComponent newInstance () {xStreamComponent xmlComponent = new xStreamComponent (); xmlComponent.alias (kelas baru [] {pageGrid.class}); return xmlcomponent; } public xStreamComponent () {this.xstream = new xStream (domdriver baru ()); } public String ToxML (objek obj) {return this.xstream.toxml (obj); } public String TopagexMl (objek obj) {registerConverter (mapCustomConverter baru (DefaultMapper baru (xStream11xmlfriendlyMapper.class.getClassLoader ()))); return toxml (OBJ); } objek publik dariPageXml (String xml) {registerConverter (mapCustomConverter baru (DefaultMapper baru (xStream11xmlfriendlyMapper.class.getClassLoader ()))); return fromxml (xml); } objek publik darixml (string xml) {return this.xstream.fromxml (xml); } @SuppressWarnings ("RawTypes") public void ProcessAnnotations (tipe kelas) {this.xstream.processAnnotations (type); } @SuppressWarnings ("rawTypes") public void ProcessAnnotations (class [] tipe) {this.xstream.processannotations (tipe); } @Suppresswarnings ("RawTypes") public void alias (nama string, tipe kelas) {this.xstream.alias (nama, type); } @SuppressWarnings ("RawTypes") public void alias (class [] type) {for (class type: type) {string className = type.getName (); coba {string [] classNames = stringutils.split (className, "."); this.xstream.alias (classNames [(classnames.length - 1)], type); } catch (Exception ex) {this.xstream.alias (className, type); }}} public void registerConverter (converter converter) {this.xstream.registerConverter (converter); } @SuppressWarnings ("RawTypes") public void eSeAttributeFor (kelas didefinisikan, string fieldName) {this.xstream.useAttributeFor (DefinedIn, fieldName); }}PageGrid terutama dienkapsulasi sebagai objek XML, dan kemudian diteruskan ke ujung depan.
MapCustomConverter.java
Paket com.honzh.common.page; import java.util.hashmap; import java.util.hashtable; import java.util.iterator; import java.util.map; impor com.thoughtworks.xstream.convertters.marshallingcontext; impor; com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; impor com.thoughtworks.xstream.io.hierarchicalStreamReader; publervonconcrycrectomerconcrection clublverconcrectom; commonconconconconconconconconconconconconcon; rangka com.thoughtworks.xstream.mapper.mapper; MapCustomConverter (mapper mapper) {super (mapper); } @SuppressWarnings ("RawTypes") Public Boolean CanConvert (Tipe Kelas) {return (type.equals (hashmap.class)) || (type.equals (hashtable.class)) || (type.getName (). Equals ("java.util.linkedhashmap")) || (type.getName (). Equals ("sun.font.attributeMap")); } @SuppressWarnings ({"RawTypes"}) public void marshal (sumber objek, penulis hierarchicalStreamWriter, MarshallingContext Context) {peta peta = (peta) sumber; untuk (iterator iterator = map.entryset (). iterator (); iterator.hasnext ();) {map.entry entri = (map.entry) iterator.next (); writer.startnode (entry.getkey () == null? "null": entry.getkey (). tostring ()); writer.setValue (entry.getValue () == null? "": entri.getValue (). ToString ()); writer.endnode (); }} @SuppressWarnings ("RawTypes") Objek publik unmarshal (pembaca HierarchicalStreamReader, konteks UnmarshallingContext) {peta peta = (peta) createCollection (context.getRequiredType ()); POPULATEMAP (Pembaca, Konteks, Peta); peta mengembalikan; } @SuppressWarnings ({"rawTypes", "Uncecked"}) void populateMap yang dilindungi (pembaca HierarchicalStreamReader, konteks unmarshallingcontext, peta peta) {while (reader.hasmorechildren ()) {reader.movedown (); Tombol objek = reader.getNodename (); Nilai objek = reader.getValue (); peta.put (tombol, nilai); reader.moveup (); }}}Ini terutama mengubah hashmap yang diambil dalam database menjadi data format XML standar.
Baseconditionvo.java
Paket com.honzh.common.persistence; import java.util.hashmap; import java.util.map; impor org.apache.atis.Session.rowbounds;/** * Kelas pengaturan parameter selama kueri pagination. 2.pagenum─ Halaman mana yang. <br> * 3. numperpage urap banyak yang ditunjukkan halaman? Saat kosong, page_show_count ditampilkan. <br> * 4.TotalCount─ ilanganS angka total. TotalCount/NumPerPage = Berapa Halaman <br> * 5.Orderfield─ Missorted kolom. <br> * 6. orderdirection── arah penyortiran. * </p> */kelas publik BaseconditionVo {public final static int page_show_count = 50; private int pagenum = 1; private int numperpage = 0; Private Long TotalCount = 0; private string orderfield = ""; Private String orderDirection = ""; /*** @Fields PS: Encapsulate Tipe Parameter. */ peta pribadi <string, objek> mo = hashmap baru <string, object> (); publik int getPagenum () {return pagenum; } public void setPagenum (int pagenum) {this.pagenum = pagenum; } public int getNumperpage () {return numperpage> 0? numperpage: page_show_count; } public void setnumperpage (int numperpage) {this.numperpage = numperpage; } public string getOrderField () {return orderfield; } public void setOrderField (String orderfield) {this.orderfield = orderfield; } public string getOrderDirection () {return "desc" .equals (orderDirection)? "Desc": "ASC"; } public void setOrderDirection (String orderDirection) {this.orderDirection = orderDirection; } public long getTotalCount () {return TotalCount; } public void setTotalCount (long totalCount) {this.totalCount = totalCount; } public int getStartIndex () {int pagenum = this.getPagenum ()> 0? this.getpagenum () - 1: 0; return pagenum * this.getNumperpage (); } public rowbounds createrowbounds () {rowbounds ro = rowbounds baru (this.getStartIndex (), this.getNumperpage ()); mengembalikan ro; } / ** * @title: addParams * @description: Tambahkan kondisi kueri * Kunci @param * @param nilai * / public void addParams (tombol string, nilai objek) {this.getMo (). Put (tombol, nilai); } / ** * @title: getParams * @description: Dapatkan kondisi kueri * Kunci @param * @return * / objek publik getParams (tombol string) {return this.getMo (). Get (key); } / ** * @return The Mo * / public Map <String, Object> getMo () {return mo; } / ** * @param mo * mo untuk mengatur * / public void setMo (peta <string, objek> mo) {this.mo = mo; } @Override Public String ToString () {return "condition:" + pagenum + "," + numperpage + "," + totalCount + "," + orderfield + "," + orderDirection + "," + mo; }}Objek data kueri untuk pagination, termasuk bidang paging, penyortiran, dan pencarian.
Protected BaseconditionVo GetBaseConditionVofortable () {BaseconditionVo vo = BaseconditionVo baru (); // parameter pagination int currentpage = getParAToint ("halaman"); ukuran int = getParAToint ("baris"); String sortorder = getPara ("sord"); String sortCol = getPara ("sidx"); vo.setnumperpage (ukuran); vo.setpagenum (currentpage); vo.setorderfield (sortcol); vo.setOrderDirection (SortOrder); kembali vo; } Konversi parameter yang dilewati oleh JQGrid ke BaseconditionVo Pagination Query Object. void renderxml yang dilindungi (httpservletResponse res, string xmlResponse) {coba {res.setcharacterencoding ("UTF-8"); res.setHeader ("tipe konten", "teks/xml"); Printwriter out = res.getWriter (); out.print (xmlResponse); if (out! = null) {out.close (); }} catch (ioException e) {logger.error (e.getMessage ()); logger.error (e.getMessage (), e); }}Menulis XML ke aliran output.
Setelah mendefinisikan objek -objek dasar ini, kami akan mulai mendapatkan dan meneruskan data.
@SuppressWarnings ("RawTypes") @RequestMapping (value = "DataBlePayDealORDersList") public void datapaydealordersList (httpserVletResponse response) {coba {logger.debug ("Dapatkan pesanan saya dibayar"); XStreamComponent xStreamComponent = xStreamComponent.NewInstance (); // Dapatkan Parameter Daftar BaseconditionVo Vo = GetBaseConditionVofortable (); vo.addparams ("name", getpara ("name")); logger.debug ("Saya membayar kueri pesanan" + vo); // Proyek yang saya buat Daftar MyDealorders = DealorderService.getByisSueuid (VO, VO.CreaterowBounds ()); Jumlah panjang = DealorderService.SearchissuetotalCount (VO); String xmlResponse = xStreamComponent.topagexml (createPageGrid (myDealorders, vo, count.intvalue ())); renderxml (respons, xmlResponse.replaceall ("__", "_")); } catch (uncategorizedSqlexception e) {logger.error (e.getMessage ()); logger.error (e.getMessage (), e); renderxml (respons, constants.query_error); } catch (exception e) {logger.error (e.getMessage ()); logger.error (e.getMessage (), e); renderxml (respons, constants.server_error); }}Mari kita jelaskan secara rinci:
1. XStreamComponent.newInstance() membuat objek aliran XML.
2. BaseConditionVO vo = getBaseConditionVOForTable(); Buat objek parameter kueri pagination.
3. vo.addParams("name", getPara("name")); Masukkan nilai bidang pencarian ke dalam objek kueri.
4. dealOrderService.getByIssueUid(vo, vo.createRowBounds()); Metode kueri pagination mybatis sangat sederhana. Seorang teman dalam grup dulu secara khusus membuat komponen pagination mybatis. Saya pikir menggunakan metode kueri MyBatis asli lebih efisien. Setelah itu, kami akan menulis metode penulisan SQL yang sesuai dari XML di MyBatis.
5. renderXml(response, xmlResponse.replaceAll("__", "_")); Tulis data ke aliran output output JSP.
Akhirnya, mari kita perkenalkan cara mendapatkan data paging melalui mybatis.
mappper.java
Paket com.honzh.biz.database.mapper; impor java.math.bigdecimal; impor java.util.hashmap; import java.util.list; impor org.apache.atisis.session.rowbounds; impor com.honzh.common.persensence @SuppressWarnings ("RawTypes") Daftar <HashMap> getByissueuid (BaseconditionVo Vo, Rowbounds Createrowbounds);}Dua objek yang ingin Anda lewati mapper.xml adalah BaseconditionVo dan Paging Rowbounds. SQL di XML akan secara otomatis paging.
mappper.xml
<pilih id = "getByisSueuid" resultType = "hashmap" parameterType = "peta"> pilih * dari daa di mana is_delete = 0 <if test = "mo.name! = null dan mo.name! = '' dan y.name seperti concat ('%', '$ {mo.Name}'%'%'/n. ! = '' "> Order dengan $ {orderfield} <if test =" orderDirection! = Null dan orderDirection! = '' "> $ {OrderDirection} </pilih> </wapAnda tidak akan pernah bisa memperhatikan Rowbounds, MyBatis akan secara otomatis merangkum batas untuk Anda. Nama domain pencarian dapat diperoleh langsung melalui Mo.name atau. Orderfield dan OrderDirection juga disahkan.
Sejauh ini, seluruh bootstrap yang tertanam di JQGrid telah berakhir dengan sukses. Oke, buat meja Anda luar biasa!