ในส่วนก่อนหน้าเราเสร็จสิ้นการใช้ DataGrid เพื่อแสดงข้อมูลผลิตภัณฑ์ทั้งหมด ในส่วนนี้เราเริ่มเพิ่มฟังก์ชั่นหลายอย่าง: เพิ่มอัปเดตลบและสอบถาม ก่อนอื่นเราใช้การแสดงผลในแผนกต้อนรับจากนั้นทำพื้นหลังเพื่อรับข้อมูล
1. การใช้งานเบื้องหน้าของการเพิ่มการอัปเดตการลบและการสอบถามฟังก์ชั่น
มีคุณสมบัติแถบเครื่องมือในการควบคุม DataGrid ซึ่งเพิ่มแถบเครื่องมือ เราสามารถเพิ่มปุ่มเหล่านี้ลงในคุณสมบัติแถบเครื่องมือเพื่อให้ได้ฟังก์ชั่นที่สอดคล้องกัน ก่อนอื่นให้ดูที่คำจำกัดความของแถบเครื่องมือของเอกสารอย่างเป็นทางการ:
เราใช้อาร์เรย์เพื่อกำหนดแถบเครื่องมือและเพิ่มรหัสต่อไปนี้ลงในหน้า query.jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> มาร์จิ้น: 1px; } .SearchBox {มาร์จิ้น: -3; } </style> <script type = "text/javascript"> $ (function () {$ ('#dg'). dataGrid ({// เปลี่ยนที่อยู่ URL เพื่อขอ URL หมวดหมู่: แสดงต่อหน้าค่าเริ่มต้นคือ 10 หน้า: 5, // ตั้งค่าจำนวนเร็กคอร์ดต่อหน้าสำหรับการเลือกผู้ใช้ค่าเริ่มต้นคือ 10,20,30,40 ... PageList: [5,10,15,20], IDField: 'ID', // ระบุ ID เป็นช่องว่าง หน้า/ *************************************/ toolbar: [{iconcls: 'icon-add', ข้อความ: 'เพิ่มหมวดหมู่', handler: function () {alert ('เพิ่มหมวดหมู่-') ')' update: 'update:' หมวดหมู่-');}},'-', {iconcls:' icon-remove ', ข้อความ:' ลบหมวดหมู่ ', ตัวจัดการ: function () {// ตัดสินว่ามีการเลือกบันทึกแถวหรือไม่ // ส่งคืนแถวที่เลือกหากไม่มีการเลือกแถวให้ส่งคืนอาร์เรย์ที่ว่างเปล่าถ้า (rows.length == 0) {// ป๊อปอัพข้อความพรอมต์ $ .messager.show ({// ไวยากรณ์คล้ายกับวิธีคงที่ใน Java } else {// แจ้งว่าจะยืนยันการลบหรือไม่ หากได้รับการยืนยันให้ดำเนินการตรรกะของการลบ $ .messager.confirm ('ลบการยืนยันกล่องโต้ตอบ', 'คุณแน่ใจหรือไม่ว่าคุณต้องการลบรายการนี้?', ฟังก์ชั่น (r) {ถ้า (r) {// ออกจากการดำเนินการแจ้งเตือน ("-ลบการดำเนินการ-")}}); }}}}, '-', {// ปุ่มสอบถามไม่ใช่ LinkButton, มันมีไวยากรณ์ แต่มันยังรองรับการแยกวิเคราะห์ข้อความแท็ก html: "<อินพุต id = 'ss' name = 'ss' name = 'ss' />"}] Searcher: function (value, ชื่อ) {// value แสดงถึงค่าที่ป้อน // การดำเนินการค้นหา}, พรอมต์: 'โปรดป้อนคำค้นหาค้นหา' // การแสดงผลเริ่มต้น}); - </script> </head> <body> <table id = "dg"> </table> </body> </html>ด้วยวิธีนี้เราได้ตั้งค่ากรอบเบื้องหน้าสำหรับการเพิ่มอัปเดตการลบและการสืบค้น ตอนนี้สามารถแสดงในเบื้องหน้า ไม่มีข้อมูลที่อยู่ในพื้นหลังเพียงกล่องพรอมต์จะปรากฏขึ้น แต่ฟังก์ชั่นการแสดงผลเสร็จสมบูรณ์แล้ว มาดูเอฟเฟกต์กันเถอะ:
ต่อไปเราจะทำฟังก์ชั่นที่สอดคล้องกันทีละรายการ
2. การใช้งานการสืบค้นหมวดหมู่ DataGrid
การใช้แบบสอบถามเป็นเรื่องง่ายที่สุด ป้อนคำหลักในช่องค้นหาจากนั้นส่งคำหลักเป็นพารามิเตอร์ไปยังการดำเนินการจากนั้นบริการจะนำข้อมูลออกจากฐานข้อมูลบรรจุในรูปแบบ JSON และส่งผ่านไปยังแผนกต้อนรับเพื่อแสดงผล กระบวนการนี้เหมือนกับข้อมูลผลิตภัณฑ์ที่แสดงก่อนหน้านี้ เราจำเป็นต้องเพิ่มรหัสสำหรับส่วนการค้นหาใน JSP ด้านบนและไม่จำเป็นต้องเปลี่ยนรหัสอื่น ๆ รหัสเพิ่มเติมมีดังนี้:
// แปลงกล่องข้อความสามัญเป็นกล่องข้อความค้นหาแบบสอบถาม $ ('#ss'). searchbox ({// ทริกเกอร์ผู้ค้นหาเหตุการณ์แบบสอบถาม: ฟังก์ชั่น (ค่า, ชื่อ) {// ค่าแสดงค่าอินพุต // การแจ้งเตือน (ค่า + "," + ชื่อ) แทนที่แอตทริบิวต์ 'QueryParams'วิธีการโหลดสามารถโหลดแถวทั้งหมดในหน้าแรก มันมีพารามิเตอร์ หากระบุไว้จะนำ QueryParams มาด้วย มิฉะนั้นพารามิเตอร์ที่ระบุโดย QueryParams ด้านบนจะถูกส่งผ่านเป็นค่าเริ่มต้น ที่นี่เราตั้งค่าประเภทเป็นค่าของค่านั่นคือคำค้นหาแบบสอบถามที่ป้อนโดยผู้ใช้แล้วส่งผ่านไปยังการกระทำ การค้นหาพื้นหลังในฐานข้อมูลตามค่าที่ป้อนโดยผู้ใช้และส่งคืนไปยังเบื้องหน้า ผลการดำเนินการมีดังนี้:
ด้วยวิธีนี้ฉันเสร็จสิ้นฟังก์ชั่นการค้นหาซึ่งค่อนข้างง่าย
3. การใช้งานการลบหมวดหมู่ DataGrid
ตอนนี้มาใช้ฟังก์ชั่นการลบ จาก JSP ด้านบนเราจะเห็นว่าก่อนการลบเราจะพิจารณาว่าผู้ใช้ได้เลือกบันทึกหรือไม่ ถ้าไม่เราจะให้พรอมต์แก่ผู้ใช้ หากถูกเลือกหน้าต่างป๊อปอัพจะอนุญาตให้ผู้ใช้ยืนยัน หากเป็นจริงฟังก์ชั่นการลบจะถูกดำเนินการ มีรายละเอียดที่ควรทราบ หากคุณต้องการลบหลายระเบียนพร้อมกันคุณสมบัติ SingleSelect ด้านบนควรตั้งค่าเป็นเท็จ
ก่อนอื่นเราได้เสริมรหัสที่ลบใน query.jsp ด้านบนดูด้านล่าง:
{iconcls: 'icon-remove', ข้อความ: 'ลบหมวดหมู่', handler: function () {// ตัดสินว่ามีการเลือกบันทึกแถวหรือไม่ใช้ getSelections เพื่อรับแถวที่เลือกทั้งหมด var rows = $ ("#dg"). dataGrid ("getSelections"); // ส่งคืนแถวที่เลือกหากไม่มีการเลือกแถวให้ส่งคืนอาร์เรย์ที่ว่างเปล่าถ้า (rows.length == 0) {// ป๊อปอัพข้อความพรอมต์ $ .messager.show ({// ไวยากรณ์คล้ายกับวิธีคงที่ใน Java } else {// แจ้งว่าจะยืนยันการลบหรือไม่ หากได้รับการยืนยันตรรกะของการลบจะถูกดำเนินการ $ .messager.confirm ('ลบการยืนยันกล่องโต้ตอบ', 'คุณแน่ใจหรือไม่ว่าคุณต้องการลบรายการนี้?', ฟังก์ชั่น (r) {ถ้า (r) {// 1 รับ ID ที่เกี่ยวข้องจากฉัน {ids + = rows [i] .id + ",";} ids = ids.substr (0, ids.lastindexof (",")); การดำเนินการ $ ("#dg"). dataGrid ("uncheckall"); ผงชูรส: 'ลบล้มเหลวโปรดตรวจสอบการดำเนินการ', หมดเวลา: 2000, showtype: 'slide',}); - หากผู้ใช้เลือกที่จะลบกล่องโต้ตอบจะปรากฏขึ้นก่อน เมื่อผู้ใช้กำหนดว่าเขาต้องการลบเราต้องได้รับ ID ของผลิตภัณฑ์ที่เลือกโดยผู้ใช้ให้แยก ID เหล่านี้ลงในสตริงแล้วส่งคำขอ AJAX ไปยังพื้นหลัง พารามิเตอร์แรกใน $ .post จะถูกส่งไปยังการกระทำนั้นพารามิเตอร์ที่สองคือพารามิเตอร์ที่ส่งและพารามิเตอร์ที่สามคือฟังก์ชันการโทรกลับนั่นคือหลังจากการลบสำเร็จแล้ววิธีการในฟังก์ชั่นจะถูกดำเนินการ ผลลัพธ์พารามิเตอร์ของฟังก์ชั่นถูกส่งจากพื้นหลังและพารามิเตอร์ที่สี่เป็นตัวเลือกซึ่งเป็นประเภทของข้อมูลการส่งคืน มามุ่งเน้นไปที่เนื้อหาใน $ .post เมื่อพื้นหลังส่งคืน "จริง" เพื่อระบุว่าการลบนั้นสำเร็จจากนั้นเราจะเรียกวิธีการโหลดซ้ำใน DataGrid เพื่อรีเฟรชหน้า การโหลดซ้ำเหมือนกับโหลดที่ใช้ในแบบสอบถามก่อนหน้า ความแตกต่างคือการโหลดซ้ำยังคงอยู่ในหน้าปัจจุบันหลังจากรีเฟรชในขณะที่โหลดจะแสดงหน้าแรก
โอเคส่วนหน้าส่วนหน้าถูกเขียนขึ้น ถัดไปทำวิธีที่สอดคล้องกันในพื้นหลัง ขั้นแรกให้เพิ่มวิธีการ DELETEBYIDS ในหมวดหมู่ Service และใช้วิธีการในคลาสการใช้งานหมวดหมู่ SERVCEIMPL:
// categoryService อินเตอร์เฟสสาธารณะหมวดหมู่ส่วนต่อประสาน Explaive Baseservice <หมวดหมู่> {// ข้อมูลหมวดหมู่การสืบค้น, การเรียงลำดับผู้ดูแลระบบรายชื่อสาธารณะ <หมวดหมู่> QueryJoinAccount (ประเภทสตริง, หน้า int, ขนาด int); // สอบถามชื่อของหมวดหมู่ // สอบถามจำนวนทั้งหมดของบันทึกตามคำหลัก getCount ยาวสาธารณะ (ประเภทสตริง); // ลบหลายระเบียนตาม IDS โมฆะสาธารณะ DELETEBYIDS (String ID); } // CategoryServiceImpl คลาสการใช้งาน @SuppressWarnings ("ไม่ได้ตรวจสอบ") @Service ("หมวดหมู่บริการ") หมวดหมู่ระดับสาธารณะหมวดหมู่ ServiceImpl ขยาย BaseserviceImpl <หมวดหมู่> ใช้ @ @catree) hql = "ลบออกจากหมวดหมู่ c โดยที่ c.id ใน (" + ids + ")"; getSession (). createquery (HQL) .ExecuteUpdate (); - หลังจากเขียนส่วนบริการเราจะเริ่มเขียนส่วนการกระทำ เนื่องจากเราต้องการรับข้อมูล IDS ที่ส่งจากแผนกต้อนรับจึงต้องมีตัวแปรในการดำเนินการที่ใช้วิธีการรับและตั้งค่าเพื่อรับข้อมูลนี้ นอกจากนี้เราต้องส่งผลไปยังแผนกต้อนรับ เมื่อเราทำการสืบค้นแบบเรียงซ้อนในบทก่อนหน้าวิธีที่ใช้คือการจัดทำแพ็คเกจข้อมูลผลลัพธ์แบบสอบถามในรูปแบบ JSON และส่งผ่านไปยังแผนกต้อนรับดังนั้นจำเป็นต้องใช้แผนที่แล้วแผนที่จะถูกแปลงเป็นรูปแบบ JSON ผ่านไฟล์การกำหนดค่า ที่นี่ข้อมูลที่เราส่งผ่านไปยังแผนกต้อนรับนั้นค่อนข้างง่าย หากเราลบการแชร์ได้สำเร็จเราสามารถผ่าน "จริง" ได้ดังนั้นเราไม่จำเป็นต้องจัดทำมันในรูปแบบ JSON เราส่งผ่านการสตรีม หลักการเหมือนกันก่อน นายกรัฐมนตรีเราต้องมีวัตถุสตรีมเพื่อบันทึกไบต์ "จริง" และจากนั้นผ่านการกำหนดค่าวัตถุจะถูกสตรีมไปที่แผนกต้อนรับ เรายังคงเขียนวัตถุทั้งสองนี้ใน baseaction ดังต่อไปนี้:
@Controller ("baseaction") @scope ("prototype") ระดับสาธารณะ Baseaction <t> ขยายการดำเนินการ usponderment regquestaware, sessionaware, applicationaware, modeldriven <t> {// รับ ID ที่จะถูกลบ ข้อมูลนี้ได้รับจาก struts จากนั้นส่งไปยังเบื้องหน้าผ่านรูปแบบของสตรีมดังนั้นใช้วิธี GET เพื่อป้องกันรหัสสตริง Protected InputStream InputStream; // ละเว้นด้านล่าง ... } วิธีการที่สอดคล้องกันในหมวดหมู่มีดังนี้:
@Controller ("หมวดหมู่") @Scope ("ต้นแบบ") หมวดหมู่คลาสสาธารณะขยาย baseaction <หมวดหมู่> {สตริงสาธารณะ queryJoInAccount () {// ละเว้น ... } สตริงสาธารณะ deleteByIds () {system.out.println (ids); CategoryService.deleteByids (ID); // หากการลบสำเร็จมันจะถูกดำเนินการลง เราผ่าน "จริง" ไปยังเบื้องหน้าในรูปแบบของสตรีม inputstream = new byteArrayInputStream ("true" .getBytes ()); // บันทึกไบต์ของ "true" ลงในสตรีม inputstream ส่งคืน "สตรีม"; - จากนั้นมาดูการกำหนดค่าที่สอดคล้องกันใน struts.xml:
<struts> <constant name = "struts.devmode" value = "true"/> <package name = "shop" ขยาย = "json-default"> <!-jason-default สืบทอด struts-default-> <sults-sults> กำหนดค่าในฤดูใบไม้ผลิเพราะจะต้องส่งมอบให้กับการจัดการฤดูใบไม้ผลิ-> <action name = "category_*" method = "{1}"> <name result = "jsonMap" type = "json"> <! ส่งใน imputstream-> </result> </action> <action name = "account_*" method = "{1}"> <ชื่อผลลัพธ์ = "index">/index.jsp </result> </action> <! name = "send">/web-inf/{1}/{2} .jsp </result> </action> </package> </struts>ด้วยวิธีนี้เราได้ทำการลบและดูผล:
หลังจากการทดสอบสำเร็จเรายังสามารถเลือกหลายรายการเพื่อลบในครั้งเดียว ณ จุดนี้ฟังก์ชั่นการลบจะเสร็จสมบูรณ์
ที่อยู่ดั้งเดิม: http://blog.csdn.net/eson_15/article/details/51338991
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น