การกรองใน jqgrid ด้วยข้อมูลระยะไกลและการจัดรูปแบบ

ฉันมีข้อกำหนดในการกรองข้อมูลในเครื่องใน jqgrid โดยไม่ต้องใช้ UI ในตัว ฉันติดตามคำตอบของ Oleg ในโพสต์ jqGrid Filtering Records มันใช้งานได้อย่างมีเสน่ห์ด้วยการเปลี่ยนแปลงการตั้งค่าของฉัน อย่างไรก็ตาม ดูเหมือนว่าฉันไม่สามารถใช้งานฟิลด์ที่มีการจัดรูปแบบระเบียนได้ ข้อมูล jqgrid เป็นแบบรีโมต

การโพสต์ตัวอย่างโค้ดจาก jqGrid Filtering Records เนื่องจากนั่นคือสิ่งที่ฉันมี:

$("#search").click(function() {
var searchFiler = $("#filter").val(), grid = $("#list"), f;

if (searchFiler.length === 0) {
    grid[0].p.search = false;
    $.extend(grid[0].p.postData,{filters:""});
}
f = {groupOp:"OR",rules:[]};
f.rules.push({field:"name",op:"cn",data:searchFiler});
f.rules.push({field:"note",op:"cn",data:searchFiler});
grid[0].p.search = true;
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
});

ในกรณีของฉัน ฟิลด์ 'ชื่อ' จะถูกจัดรูปแบบใน jqgrid:

{name:"name", index:"name", width:250, align:'left',
  formatter: function(cellvalue, options, rowObject)
{
  return rowObject.Data[0]['userName'];
}
 },
 ...
 jsonReader : {
        repeatitems:false,
         root: 'rows',
         userdata: 'rows'
      },
loadonce: true,      
viewrecords: true,
autowidth: true,
multiselect: false,
height: 500,    
rowNum: 999,
subGrid: true,

เราทำการค้นหาที่แบ็กเอนด์หนึ่งครั้งและเก็บข้อมูลไว้ใน 'แถว' เพื่อแสดงในตารางย่อย

พอยน์เตอร์ใด ๆ ที่ชื่นชมอย่างมาก

ขอบคุณ,

อาชา


person Alice    schedule 19.11.2012    source แหล่งที่มา


คำตอบ (1)


ฉันไม่คิดว่าคุณจะต้องใช้ฟอร์แมตเตอร์แบบกำหนดเองในกรณีนี้ ฉันคิดว่าคุณสามารถใช้ jsonmap อาจจะ jsonmap: "Data.0.userName" ต้องการสิ่งที่คุณต้องการ หรือคุณสามารถใช้ jsonmap เป็นฟังก์ชันได้ (เช่น ที่นี่ หรือ ที่นี่)

โดยทั่วไป คุณควรกำหนด unformatter ร่วมกับ ตัวจัดรูปแบบที่กำหนดเอง อาจเป็นสาเหตุของปัญหาปัจจุบันของคุณ

person Oleg    schedule 19.11.2012
comment
ขอบคุณมากโอเล็ก มันใช้งานได้เหมือนมีเสน่ห์ ฉันเดาว่าฉันไม่เคยต้องการฟอร์แมตเตอร์ที่นี่ jsonmap: Data.0.userName ใช้งานได้ ตอนนี้ฉันไม่แน่ใจว่าทำไมฉันถึงใช้ฟอร์แมตเตอร์แบบกำหนดเองตั้งแต่แรก เพราะฉันแค่แมปข้อมูลที่นี่เท่านั้น คุณให้ทางเลือกแก่ฉันมากมายที่นี่ ดังนั้นคราวหน้าฉันจะตัดสินใจได้ดีขึ้น - person Alice; 20.11.2012
comment
สำหรับการกรองนั้น เป็นไปได้ที่จะทำให้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ฉันพยายามเพิ่ม 'var searchFiler = $(#filter).val().toLowerCase(), f' แต่จะพลาดกรณีที่ฉันมีบางอย่างเช่น 'Asha' ในช่อง 'ชื่อ' - person Alice; 20.11.2012
comment
ไม่เป็นไร เพิ่ม allowanceCase: true สำหรับ jqgrid ที่คุณพูดถึงใน ตัวกรองไวด์การ์ดที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่พร้อม filterToolbar นั่นได้ผล ขอบคุณอีกครั้ง. - person Alice; 20.11.2012
comment
@Asha: คุณสามารถรวมตัวเลือก ignoreCase: true jqGrid ได้ - person Oleg; 20.11.2012