ส่วนประกอบตารางเนทีฟของ Bootstrap สามารถตอบสนองการแสดงข้อมูลอย่างง่ายและไม่สามารถปฏิบัติตามข้อกำหนดการปฏิบัติงานได้มากขึ้น แน่นอนคุณสามารถค้นหาส่วนประกอบตารางที่ใช้ bootstrap ที่เรียกว่า "dataTables-1.10.11" แต่ถ้าคุณไม่รู้เกี่ยวกับ API มากนักมันจะเจ็บปวดที่จะใช้ อย่างไรก็ตามหากคุณเลือกที่จะใช้ JQGrid บทช่วยสอนนี้จะนำโซลูชันมาสู่ตารางปฏิบัติการนี้
1. ผลการแสดงผล
ตกลงเพียงแค่แสดงภาพนี้ ฉันเชื่อว่าคุณตกหลุมรัก JQGrid เวอร์ชัน bootstrap มันเข้ากันได้กับ bootstrap มากและสมบูรณ์แบบ แน่นอนว่าสิ่งนี้ต้องการการเปลี่ยนแปลงบางอย่างกับ JQGrid ของเหตุผลและเพื่อห่อหุ้มส่วนประกอบ
2. ดาวน์โหลดทรัพยากร
อย่างไรก็ตามฉันชอบแบ่งปัน คุณสามารถดาวน์โหลดรหัสส่วนประกอบของ JQGrid ได้จากเว็บไซต์ทางการของ JQGrid แต่ต้องมีการเปลี่ยนแปลงบางอย่างหลังจากดาวน์โหลด จากนั้นฉันอัปโหลด JQGrid ที่แก้ไขโดยตรงไปยัง GIT และคุณจะต้องนำเข้าไฟล์ที่ให้ไปยังโครงการที่เกี่ยวข้องของคุณเท่านั้น
นอกจากนี้คุณต้องดาวน์โหลด jQuery-UI-1.10.0.custom.css และฉันจะไม่ให้ที่อยู่ดาวน์โหลด แต่ฉันเชื่อว่าคุณจะพบมันอย่างแน่นอน แม้ว่าคุณจะใช้สาว Baidu ที่มีอุบัติเหตุบ่อยครั้งคุณก็สามารถหาได้
3. บทความนี้เกี่ยวกับอะไร
ตั้งแต่ฉันสร้างกลุ่ม QQ นักเรียนบางคนได้เข้าร่วมกลุ่มใน "กระแสไม่หยุดหย่อน" แต่ฉันก็พบว่าขั้นตอนแรกในกลุ่มมาหาฉันเพื่อขอตัวอย่างหรือรหัสโครงการ ฉันไม่ชอบสิ่งนี้ ทำด้วยตัวเองใช้สิ่งต่อไปนี้และเปลี่ยนมันและมันจะเป็นของคุณเอง เห็นได้ชัดว่าคุณจะไม่ได้รับความช่วยเหลือเพิ่มเติมจากการคัดลอกรหัสของฉันอย่างสมบูรณ์ ฉันหวังว่านักเรียนข้างต้นจะใช้ความคิดริเริ่มเมื่อพวกเขากำลังศึกษา
หลังจากพูดเรื่องไร้สาระเล็ก ๆ น้อย ๆ ข้างต้นลองกลับไปที่จุดและพูดคุยเกี่ยวกับสิ่งที่บล็อกของเราพูดถึงและอะไรคือกุญแจสำคัญในการฝัง JQGrid ใน Bootstrap ฉันสรุปมันดังนี้:
รูปแบบเค้าโครง jqgrid ในพารามิเตอร์ bootstrap ของ JQGrid ของตัวเองที่สร้างสรรค์การทำงานของข้อมูล JQGrid ของ JQGrid ใน bootstrap
มันถูกแบ่งออกเป็นส่วนหนึ่งอย่างไม่แน่นอนเพื่อแสดงให้เห็น แต่จะต้องสังเกตว่าเนื่องจากข้อ จำกัด ด้านพื้นที่มีเพียงความคิดและรหัสบางส่วนที่มีอยู่ในบล็อก
①. แผนเลย์เอาต์ของ jqgrid ใน bootstrap
<! doctype html> <html lang = "zh-cn"> <%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "UTF-8"%> <%@ รวมไฟล์ = " file = "/ส่วนประกอบ/common/csslib.jsp"%> <head> <link type = "text/css" rel = "stylesheet" href = "$ {ctx} /css/deal/my_pay_list.css"/> </head> action = "$ {ctx}/deal/dataablePayDealordersList" method = "post"> <div> <div> <label for = "name"> ชื่อโครงการ: </label> <div> <อินพุตประเภท = "text" name = "name" id = "name" id = "searchbtn"> ค้นหา </button> </div> </div> <div> <div> <div> <table id = "pageGrid" rel = "jqgridform"> </table> <div id = "pageGridPager"> </div> </div> src = "$ {ctx} /js/deal/my_pay_list.js"> </script> </body> </html>โครงการของแต่ละคนแตกต่างกันอย่างมาก ในรหัสที่ระบุไว้เรามุ่งเน้นไปที่ส่วน JQGrid เท่านั้น:
id="jqgridForm" ที่นี่เรามีแบบฟอร์มที่มีเลเยอร์ของเงื่อนไขการค้นหาสำหรับ jqgrid นั่นคือส่วนการค้นหาที่ระบุไว้ในการเรนเดอร์ เมื่อคลิกปุ่มค้นหาเงื่อนไขการสืบค้นของฟิลด์แบบฟอร์มจะถูกส่งไปยังคอนโทรลเลอร์และได้รับข้อมูลที่ได้รับ id="searchBtn" กำหนดปุ่มค้นหาซึ่งจะใช้ในภายหลังบน modularity <table id="pageGrid" rel="jqgridForm"></table> <div id="pageGridPager"></div> กำหนดองค์ประกอบตารางของ JQGrid และองค์ประกอบส่วนท้ายของ JQGrid กฎที่ใช้โดยโครงการของฉันเห็นด้วยกับกฎนี้ชั่วคราวและคุณสามารถมีกฎของคุณเองได้ โดยการระบุ ID ของแบบฟอร์มโดย REL จะใช้แบบฟอร์มการดึงตารางได้ง่ายขึ้น ②พารามิเตอร์ที่สร้างสรรค์ของ JQGrid
การสร้างพารามิเตอร์ฉันแยกมันลงใน my_pay_list.js ใน①
$ (function () {var jqoption = {datatype: "xml", mtype: "post", shlinktofit: จริง, viewrecords: false, rownumbers: เท็จ, autowidth: จริง, ความสูง: ปริมาณ ',' สถานะการสั่งซื้อ ',' การดำเนินการ '], colmodel: [{ชื่อ:' id ', ดัชนี:' id ', ซ่อน: true}, {ชื่อ:' สถานะ ', ดัชนี:' สถานะ ', ซ่อน: true}, {ชื่อ:' image_str ', ดัชนี:' image_str ' (cellValue == 'ค่าใช้จ่ายทั้งหมด:') {ส่งคืน cellValue;}}, จัดตำแหน่ง: 'ซ้าย'}, {ชื่อ: 'oper', ดัชนี: 'oper', ความกว้าง: 90, resizable: เท็จ, เรียงลำดับ: เท็จ parseint ($ (rowoBject) .find ("สถานะ"). text ()); {return '<a target = "_ blank" href = "' common.ctx + '/deal/showdealor/' + id + '"> รายละเอียดดู </a>'; ], XMLREADER: {repeaTiTems: false, root: "pageGrid", แถว: "แผนที่", หน้า: 'หน้า', ทั้งหมด: 'ทั้งหมด', บันทึก: 'บันทึก', ID: 'ID'}, Rownum: 50, Rowlist: [50, 100, 200, 300], Pager: "#PageMager" function () {var $ form = $ ("#" + $ ("#pagegrid"). attr ("rel")); $ ("#pagegrid") footerdata ("set", {image_str: "ค่าใช้จ่ายการชำระเงินทั้งหมด:", order_price: json.message}); } // กล่องโต้ตอบถ้า ($ .fn.ajaxtodialog) {$ ("a [target = dialog]", $ ("#pagegrid")). ajaxtodialog ();}},};นักเรียนที่ไม่คุ้นเคยกับ JQGrid ทุกคนแนะนำให้อ่านตัวอย่างของ JQGrid และเอกสารอย่างเป็นทางการของ JQGrid ก่อน แน่นอนสำหรับนักเรียนที่คุ้นเคยกับ JQGrid, Doc และ Demo นั้นเป็นสิ่งที่ต้องอ่านอย่างแน่นอน
มีคุณลักษณะมากมายที่ระบุไว้ในไฟล์ด้านบน ฉันจะไม่แนะนำ jqgrid มากเกินไป ชุดรูปแบบหลักของบทความนี้คือการแนะนำวิธีการฝัง jqgrid ลงใน bootstrap ประเด็นสำคัญคือไม่แนะนำ JQGrid ฉันจะแนะนำประเด็นสำคัญเพียงเล็กน้อยเท่านั้น:
formatter: function(cellvalue, options, rowObject) { , formatters ยังคงใช้บ่อยมากดังนั้นจึงเป็นสิ่งสำคัญมากที่จะได้รับค่าของเซลล์ที่เกี่ยวข้อง JQGrid ของฉันใช้รูปแบบข้อมูล XML (ข้อมูล: "XML") ดังนั้นคุณสามารถค้นหาค่าของคอลัมน์ Deal_id ที่เกี่ยวข้องผ่าน $(rowObject).find("deal_id").text() xmlReader : { repeatitems : false, root : "PageGrid", ให้ความสนใจกับค่าพารามิเตอร์ใน XMLReader ในการแนะนำครั้งต่อไปการดำเนินการข้อมูลของ JQGrid จะได้รับการแนะนำในรายละเอียดซึ่งเกี่ยวข้องกับการห่อหุ้มข้อมูล XML พื้นหลัง $("#pageGrid").footerData("set", {image_str : "支付总花费:", order_price : json.message}); , เกี่ยวกับวิธีการ footerdata มันก็สะดวกมากในการใช้งานและเอฟเฟกต์สามารถอ้างอิงได้ว่าเป็นผล initEnv(jqOption); วิธี. หลังจากหน้า OnLoad เราผ่านพารามิเตอร์การเริ่มต้นของ JQGrid ไปยังวิธีการเริ่มต้น ในการแยกส่วนที่ตามมาของ jqgrid ใน bootstrap เราจะแนะนำวิธีการเริ่มต้น ③, jqgrid modularity ใน bootstrap
ใน②เราสังเกตเห็นวิธีการเริ่มต้นดังนั้นวิธีนี้จึงถูกสร้างขึ้นด้วยการห่อหุ้มโมดูลาร์โดยเฉพาะสำหรับ JQGrid
วิธีการเริ่มต้น
ฟังก์ชั่น initenv (jqoption) {$ (หน้าต่าง) .resize (function () {initlayout ();}); initui (null, jqoption);}ในวิธีนี้เราจะเห็นวิธีการเริ่มต้นและวิธีการเริ่มต้นและเนื้อหาเฉพาะจะถูกนำมาใช้ในภายหลัง
initlayout
ฟังก์ชั่น initlayout () {$ ("ตาราง [rel = jqgridform]") แต่ละ (ฟังก์ชั่น () {var rel = $ (นี่) .attr ("rel"); ถ้า (rel) {var $ form = $ ("#" + rel); var tablewidth = $ form.width ();นั่นคือเมื่อหน้าต่างถูกปรับขนาดเราจะวาดความกว้างสำหรับ JQGrid เพื่อปรับให้เข้ากับเค้าโครงตอบสนองของ Bootstrap วิธีที่ใช้คือวิธีการ setGridWidth ของ JQGrid
เริ่มต้น
ฟังก์ชั่น initui (_box, jqoption) {var $ p = $ (_ box || เอกสาร); if (jqoption) {yunm.debug ("initializejqgrid"); var $ form = $ ("#" + $ ("#pageGrid"). attt ("rel")); yunm.debug (yunm.array2obj ($ form.serializearray ())); // เริ่มต้น var op = $ .extend ({url: $ form.attr ("การกระทำ"), postdata: yunm.array2obj ($ form.serializearray ()),}, jqoption); $ ("#pageGrid"). jqgrid (op); // ปุ่มค้นหา $ ("#searchbtn", $ form) .lick (function () {$ ("#pagegrid"). jqgrid ('setgridparam', {url: $ form.attr ("การกระทำ"), หน้า: 1, postdata: yunmarray2obj $ ("#PageGrid") Trigger ("ReloadGrid"); // แถบเครื่องมือ, ลบมุมโค้งมนของปุ่ม $ (". btn", $ form) .Each (function () {var $ this = $ (this); $ this.css ({"Border-radius": "0px", "Border-bottom": "0",});}); }} array2Obj: ฟังก์ชัน (อาร์เรย์) {var params = $ ({}); $ .Each (อาร์เรย์, ฟังก์ชัน (i) {var $ param = $ (this) [0]; params.attr ($ param.name, $ param.value);}); ส่งคืนพารามิเตอร์ [0];},หากคุณได้อ่านบทความชุดก่อนหน้าของฉันคุณจะไม่คุ้นเคยกับวิธีการเริ่มต้นเกินไป เพื่อนที่คุ้นเคยกับ DWZ โดยธรรมชาติจะไม่ไม่คุ้นเคยกับมัน เทมเพลตส่วนใหญ่ในโครงการของฉันยังคงพึ่งพา DWZ ขอบคุณผู้อาวุโสเหล่านี้
var $form = $("#" + $("#pageGrid").attr("rel")); เนื่องจากเราเชื่อมโยงเงื่อนไขแบบฟอร์มแบบฟอร์มบน JQGrid เราจึงสามารถรับวัตถุแบบฟอร์มได้ที่นี่ เมื่อเราได้รับวัตถุแบบฟอร์มเราจะได้รับค่าของฟิลด์การค้นหา ( $form.serializeArray() ) โดยธรรมชาติ หลังจากที่คุณได้รับค่าฟิลด์การค้นหาของแบบฟอร์มคุณต้องทำการประมวลผลบางอย่างในเวลานี้ เรารู้ว่าเมื่อ JQGrid ส่งผ่านพารามิเตอร์ไปยังคอนโทรลเลอร์มีความจำเป็นที่จะต้องส่งการเพจและการจัดเรียงฟิลด์ที่เกี่ยวข้อง (หน้าแถว SORD SIDX) วิธีที่ใช้คือ $("#pageGrid").jqGrid({postData:xxx}); โดยปกติเมื่อเราส่งแบบฟอร์มเราจะต้องใช้ $form.serializeArray() แต่ถ้าในเวลานี้เพียงแค่แทนที่ xxx ด้วย $form.serializeArray() จากนั้นการเพจและการจัดเรียงฟิลด์ (หน้า, แถว, SORD, SIDX) นี่คือความขัดแย้ง วิธีจัดการกับมันในเวลานี้? วิธีแก้ปัญหาคือการคัดค้านข้อมูลแบบฟอร์ม (เมธอด Array2OBJ) จากนั้นเราจะส่งค่าของฟิลด์การค้นหาพร้อมกับฟิลด์ที่เกี่ยวข้องของการเพจและการเรียงลำดับไปยังคอนโทรลเลอร์ผ่าน var op =$.extend({url:$form.attr("action"),postData:YUNM.array2obj($form.serializeArray()),},jqOption);$("#pageGrid").jqGrid(op); $("#searchBtn", $form).click ที่โหลดข้อมูลของ JQGrid โดยการห่อหุ้มเหตุการณ์การคลิก $(".btn", $form).each(function() { วิธีการที่นี่จะดึงปุ่มเพื่อลดมุมเพื่อให้เหมาะสำหรับ JQGrid ดูการเรนเดอร์④การดำเนินการข้อมูลของ JQGrid
ฉันคิดว่าส่วนการดำเนินการของข้อมูลรวมถึงพารามิเตอร์การค้นหาการผ่านการจัดเรียงพารามิเตอร์การจัดเรียงและการเขียนคำสั่ง SQL
เกี่ยวกับการผ่านพารามิเตอร์การห่อหุ้มพารามิเตอร์ส่วนหน้าได้รับการแนะนำใน③ มาดูกันว่าข้อมูลถูกประมวลผลในคอนโทรลเลอร์อย่างไร
ก่อนอื่นให้กำหนด PageGrid ซึ่งเป็นแหล่งข้อมูลของ XMLREADER ใน JQGrid
แพ็คเกจ com.honzh.common.page; นำเข้า java.util.list; นำเข้า com.thoughtworks.xstream.annotations.xstreamalias; @xstreamalias ("pagegrid")@suppresswarnings ("rawtypes") คลาสสาธารณะ PageGrid {หน้า int ส่วนตัว; รวม INT รวม; บันทึก INT ส่วนตัว ข้อมูลรายการส่วนตัว public int getPage () {return this.page; } public void setPage (หน้า int) {this.page = page; } public int getTotal () {return this.total; } โมฆะสาธารณะ settotal (ทั้งหมด int) {this.total = total; } public int getRecords () {return this.records; } โมฆะสาธารณะ setRecords (int Records) {this.Records = บันทึก; } รายการสาธารณะ getData () {return this.data; } โมฆะสาธารณะ setData (รายการข้อมูล) {this.data = ข้อมูล; -จำเป็นต้องใช้ xstream.jar ในโครงการและดาวน์โหลดด้วยตัวเอง
xstreamComponent.java
แพ็คเกจ com.honzh.common.page; นำเข้า org.apache.commons.lang.stringutils; นำเข้า com.thoughtworks.xstream.xstream; นำเข้า com.thoughtworks.xstream.converters.converter; นำเข้า com.Thoughworks. com.thoughtworks.xstream.mapper.xstream11xmlfriendlymapper; คลาสสาธารณะ XstreamComponent {ส่วนตัว xstream xstream; สาธารณะ xstreamComponent newInstance () {xstreamComponent XMLComponent = New XStreamComponent (); XMLComponent.alias (คลาสใหม่ [] {PageGrid.class}); ส่งคืน XMLCOMPONENT; } สาธารณะ xstreamComponent () {this.xstream = ใหม่ xstream (ใหม่ domdriver ()); } สตริงสาธารณะ toxml (Object obj) {return this.xstream.toxml (obj); } สตริงสาธารณะ TOPAGEXML (Object OBJ) {registerConverter (ใหม่ MAPCUSTOMCONVERTER (ใหม่ defaultMapper (XStream11xMlFriendlyMapper.class.getClassLoader ())); Return Toxml (OBJ); } วัตถุสาธารณะ FromPageXML (String XML) {registerConverter (ใหม่ MapCustomConverter (ใหม่ defaultMapper (XStream11xmlFriendlyMapper.class.getClassLoader ())); กลับมาจาก XML (XML); } วัตถุสาธารณะ fromxml (สตริง xml) {return this.xstream.fromxml (xml); } @suppresswarnings ("rawtypes") โมฆะสาธารณะ processannotations (ประเภทคลาส) {this.xstream.processannotations (ประเภท); } @suppresswarnings ("" rawtypes ") processannotations สาธารณะ (คลาส [] ประเภท) {this.xstream.processannotations (ประเภท); } @suppresswarnings ("rawtypes") นามแฝงโมฆะสาธารณะ (ชื่อสตริง, ประเภทคลาส) {this.xstream.alias (ชื่อ, ประเภท); } @suppresswarnings ("rawtypes") นามแฝงโมฆะสาธารณะ (คลาส [] ประเภท) {สำหรับ (ประเภทคลาส: ประเภท) {สตริงคลาส classname = type.getName (); ลอง {string [] classNames = stringUtils.split (className, "."); this.xstream.alias (classnames [(classnames.length - 1)], type); } catch (Exception Ex) {this.xstream.alias (classname, type); }}} โมฆะสาธารณะ registerConverter (Converter Converter) {this.xstream.registerConverter (Converter); } @suppresswarnings ("rawtypes") โมฆะสาธารณะ useattributefor (คลาส definedin, สตริง fieldName) {this.xstream.useattributefor (definedin, fieldName); -PageGrid ส่วนใหญ่ถูกห่อหุ้มเป็นวัตถุ XML จากนั้นส่งผ่านไปยังส่วนหน้า
mapcustomconverter.java
แพ็คเกจ com.honzh.common.page; นำเข้า java.util.hashmap; นำเข้า java.util.hashtable; นำเข้า java.util.iterator; นำเข้า java.util.map; นำเข้า com.thoughtworks.xstream.converters.marshallingcontext; com.thoughtworks.xstream.io.hierarchicalstreamreader; นำเข้า com.thoughtworks.xstream.io.hierarchicalstreamwriter; นำเข้า com.thoughtworks.xstream.mapper.mapper; Mapcustomconverter สาธารณะ } @suppresswarnings ("rawtypes") บูลีนสาธารณะ canconvert (ประเภทคลาส) {return (type.equals (hashmap.class)) || (type.equals (hashtable.class)) || (type.getName (). เท่ากับ ("java.util.linkedhashmap")) || (type.getName (). เท่ากับ ("sun.font.attributeMap")); } @suppresswarnings ({"rawtypes"}) โมฆะสาธารณะจอมพล (แหล่งที่มาของวัตถุ, HierarchicalStreamWriter Writer, บริบทของ MarshallingContext) {MAP MAP = (MAP) แหล่งที่มา; สำหรับ (iterator iterator = map.entryset (). iterator (); iterator.hasnext ();) {map.entry entry = (map.entry) iterator.next (); Writer.StartNode (entry.getKey () == null? "null": entry.getKey (). toString ()); Writer.setValue (entry.getValue () == null? "": entry.getValue (). toString ()); Writer.endNode (); }} @suppresswarnings ("rawtypes") วัตถุสาธารณะ unmarshal (hierarchicalStreamReader reader, unmarshallingContext บริบท) {แผนที่แผนที่ = (แผนที่) createCollection (context.getRequiredType ()); PopulateMap (ผู้อ่าน, บริบท, แผนที่); แผนที่กลับ; } @suppresswarnings ({"rawtypes", "unchected"}) void populateMap ที่ได้รับการป้องกัน (hierarchicalStreamReader reader, unmarshallingContext บริบทแผนที่แผนที่) {ในขณะที่ (reader.hasmorechildren ()) Key Object = reader.getNodename (); ค่าวัตถุ = reader.getValue (); map.put (คีย์, ค่า); reader.moveup (); -ส่วนใหญ่จะแปลง HashMap ที่ดึงมาในฐานข้อมูลเป็นข้อมูลรูปแบบ XML มาตรฐาน
baseconditionvo.java
แพ็คเกจ com.honzh.common.persistence; นำเข้า java.util.hashmap; นำเข้า java.util.map; นำเข้า org.apache.ibatis.session.rowbounds;/** * การตั้งค่าพารามิเตอร์ระหว่างการปนเปื้อน 2. Pagenum─Whichหน้า <br> * 3.numperpage─เพจมีอะไรมากไหม? เมื่อว่างเปล่าหน้า _show_count จะปรากฏขึ้น <br> * 4.Totalcount's Number จำนวนมาก TotalCount/NumperPage = กี่หน้า <br> * 5. OrderField’s คอลัมน์ที่ถูกเรียงลำดับ <br> * 6.OrderDirection’ ทิศทางของการเรียงลำดับ * </p> */คลาสสาธารณะ baseconditionvo {สาธารณะสุดท้ายคงที่ int page_show_count = 50; pagenum int ส่วนตัว = 1; private int numperpage = 0; ส่วนตัวยาวรวม = 0; สตริงส่วนตัว orderfield = ""; สตริงส่วนตัว orderdirection = ""; /*** @fields PS: ประเภทพารามิเตอร์ห่อหุ้ม */ แผนที่ส่วนตัว <String, Object> mo = new hashmap <string, object> (); สาธารณะ int getPagenum () {return pagenum; } โมฆะสาธารณะ setpagenum (int pagenum) {this.pagenum = pagenum; } public int getNumperPage () {return numperPage> 0? numperpage: page_show_count; } โมฆะสาธารณะ setNumperPage (int numperpage) {this.numperPage = numperPage; } สตริงสาธารณะ getOrderField () {return orderfield; } โมฆะสาธารณะ setOrderField (String orderfield) {this.orderfield = orderfield; } สตริงสาธารณะ getOrderDirection () {return "desc" .equals (orderdirection)? "desc": "asc"; } โมฆะสาธารณะ setOrderDirection (String OrderDirection) {this.orderDirection = OrderDirection; } สาธารณะยาว getToTalcount () {return totalCount; } โมฆะสาธารณะ Settotalcount (Long TotalCount) {this.totalcount = TotalCount; } public int getStartIndex () {int pagenum = this.getPagenum ()> 0? this.getPagenum () - 1: 0; ส่งคืน pagenum * this.getNumperPage (); } Public Rowbounds Createrowbounds () {Rowbounds RO = ใหม่ Rowbounds (this.getStartIndex (), this.getNumperPage ()); กลับ RO; } / ** * @title: addParams * @description: เพิ่มเงื่อนไขการสืบค้น * @param คีย์ * @param value * / โมฆะสาธารณะ addparams (คีย์สตริง, ค่าวัตถุ) {this.getMo () ใส่ (คีย์, ค่า); } / ** * @title: getParams * @description: รับเงื่อนไขการสืบค้น * @param key * @return * / วัตถุสาธารณะ getParams (คีย์สตริง) {return this.getMo () รับ (คีย์); } / ** * @return the mo * / map สาธารณะ <String, Object> getMo () {return mo; } / ** * @param mo * mo to set * / public void setmo (แผนที่ <string, object> mo) {this.mo = mo; } @Override สตริงสาธารณะ toString () {return "เงื่อนไข:" + pagenum + "," + numperpage + "," + totalCount + "," + orderfield + "," + orderdirection + "," + mo; -วัตถุข้อมูลการสืบค้นสำหรับการปนเปื้อนรวมถึงการเพจการเรียงลำดับและฟิลด์ค้นหา
ได้รับการป้องกัน baseconditionvo getBaseConditionVofortable () {baseconditionVo vo = ใหม่ baseconditionVo (); // พารามิเตอร์การแบ่งหน้า int currentPage = getParatoint ("หน้า"); ขนาด int = getParatoint ("แถว"); สตริงเรียงลำดับ = getPara ("sord"); สตริง sortCol = getPara ("sidx"); Vo.setNumperPage (ขนาด); Vo.SetPagenum (CurrentPage); Vo.SetOrderfield (sortcol); VO.SetOrderDirection (SortOrder); กลับ Vo; } แปลงพารามิเตอร์ที่ส่งผ่านโดย JQGrid เป็นวัตถุแบบสอบถาม Pagination BaseconditionVo Void renderxml ที่ได้รับการป้องกัน (httpservletResponse res, string xmlresponse) {ลอง {res.setcharacterencoding ("UTF-8"); Res.Setheader ("ประเภทเนื้อหา", "ข้อความ/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); -เขียน XML ไปยังสตรีมเอาต์พุต
หลังจากกำหนดวัตถุพื้นฐานเหล่านี้เราจะเริ่มรับและส่งผ่านข้อมูล
@suppresswarnings ("rawtypes") @requestmapping (value = "datablepaydealorderslist") โมฆะสาธารณะ datapaydealorderslist (httpservletResponse) {ลอง {logger.debug ("รับคำสั่งซื้อ"); XStreamComponent XStreamComponent = XStreamComponent.NewInstance (); // รับพารามิเตอร์รายการ baseconditionvo vo = getBasEconditionVofortable (); vo.addparams ("ชื่อ", getPara ("ชื่อ")); logger.debug ("ฉันจ่ายคำสั่งซื้อแบบสอบถาม" + vo); // โครงการที่ฉันสร้างรายการ mydealorders = dealorderService.getByissueUid (vo, vo.createrowbounds ()); long count = dealorderService.Searchissuetotalcount (VO); String xmlResponse = xstreamComponent.topagexml (createPageGrid (myDealOrders, vo, count.intValue ())); renderxml (การตอบสนอง, xmlresponse.replaceall ("__", "_")); } catch (uncategorizedsqlexception e) {logger.error (e.getMessage ()); logger.error (e.getMessage (), e); renderxml (การตอบสนอง, ค่าคงที่ QUERY_ERROR); } catch (exception e) {logger.error (e.getMessage ()); logger.error (e.getMessage (), e); renderxml (การตอบสนอง, ค่าคงที่ server_error); -อธิบายรายละเอียดกันดีกว่า:
1. XStreamComponent.newInstance() สร้างวัตถุสตรีม XML
2. BaseConditionVO vo = getBaseConditionVOForTable(); สร้างวัตถุพารามิเตอร์การสืบค้นการแบ่งหน้า
3. vo.addParams("name", getPara("name")); ใส่ค่าของฟิลด์ค้นหาลงในวัตถุแบบสอบถาม
4. dealOrderService.getByIssueUid(vo, vo.createRowBounds()); วิธีการสืบค้นการปนเปื้อนของ mybatis นั้นง่ายมาก เพื่อนในกลุ่มที่ใช้ในการสร้างองค์ประกอบการแบ่งหน้าเป็นพิเศษของ mybatis ฉันคิดว่าการใช้วิธีการสืบค้น mybatis ดั้งเดิมนั้นมีประสิทธิภาพมากกว่า หลังจากนั้นเราจะเขียนวิธีการเขียน SQL ที่สอดคล้องกันของ XML ใน mybatis
5. renderXml(response, xmlResponse.replaceAll("__", "_")); เขียนข้อมูลไปยังกระแสเอาต์พุตของ JSP
สุดท้ายขอแนะนำวิธีรับข้อมูลการเพจผ่าน MyBatis
mappper.java
แพ็คเกจ com.honzh.biz.database.mapper; นำเข้า java.math.bigdecimal; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า org.apache.ibatis.session.rowbounds; @suppresswarnings ("rawtypes") รายการ <Hashmap> getByissueuid (baseconditionvo vo, Rowbounds createrowbounds);}วัตถุทั้งสองที่คุณต้องการผ่าน mapper.xml คือ baseconditionvo และ paging rowbounds SQL ใน XML จะเพจโดยอัตโนมัติ
mappper.xml
<select id = "getByissueUID" resultType = "hashmap" parameterType = "แผนที่"> เลือก * จาก daa โดยที่ is_delete = 0 <ถ้า test = "mo.name! = null และ mo.name! orderfield! = '' "> คำสั่งซื้อโดย $ {orderfield} <ถ้า test =" orderdirection! = null และ orderdirection! = '' "> $ {orderdirectionคุณไม่สามารถให้ความสนใจกับแถวที่ MyBatis จะสรุปขีด จำกัด สำหรับคุณโดยอัตโนมัติ ชื่อของโดเมนการค้นหาสามารถรับได้โดยตรงผ่าน mo.name หรือ Orderfield และ OrderDirection ก็ผ่านไป
จนถึงตอนนี้ bootstrap ทั้งหมดที่ฝังอยู่ใน JQGrid ได้สิ้นสุดลงสำเร็จ โอเคทำให้โต๊ะของคุณยอดเยี่ยม!