2012-06-25 145 views
0

我有幾個jqgrids運行,並且都運行良好。但是,當我進行搜索時,我只顯示每頁10個搜索結果。每當有超過十個結果時,點擊第二頁對網格沒有影響。這裏是我的控制器動作之一,尤其要注意的,如果satatement其中搜索是真的....Jqgrid搜索結果與Spring 3.0分頁

編輯

我想我可能已經找到了線索,以什麼可能導致我的問題。你看到我在主網格下有幾個子網格。在我的Java代碼術語具有對象-A具有對象-B 的列表,從而具有的子網格。我構建json字符串以饋入網格的方式是遍歷B列表中A中包含的列表。我沒有寫任何類型的查詢來說明順序,並限制結果等。

所以我想真正的問題應該是如何建立一個集合上的查找器,以便內容可以安排和命令爲我希望?

下面是我要求的一個實體,我的實體描述爲B以上。要特別注意的地方,我說person.getContacts()

@RequestMapping(value = "contactjsondata/{pId}", method = RequestMethod.GET) 
public @ResponseBody String contactjsondata(@PathVariable("pId") Long personId, Model uiModel, HttpServletRequest httpServletRequest) { 
    Person person = Person.findPerson(personId); 
    String column = "id"; 
if(httpServletRequest.getParameter("sidx") != null){ 
    column = httpServletRequest.getParameter("sidx"); 
} 
String orderType = "DESC"; 
if(httpServletRequest.getParameter("sord") != null){ 
    orderType = httpServletRequest.getParameter("sord").toUpperCase(); 
} 
int page = 1; 
if(Integer.parseInt(httpServletRequest.getParameter("page")) >= 1){ 
    page = Integer.parseInt(httpServletRequest.getParameter("page")); 
} 
int limitAmount = 10; 
int limitStart = limitAmount*page - limitAmount; 
List<Contact> contacts = new ArrayList<Contact>(person.getContacts());   
double tally = Math.ceil(contacts.size()/10.0d); 
int totalPages = (int)tally; 
int records = contacts.size(); 

    StringBuilder sb = new StringBuilder(); 
sb.append("{\"page\":\"").append(page).append("\", \"records\":\"").append(records).append("\", \"total\":\"").append(totalPages).append("\", \"rows\":["); 
boolean first = true; 
for (Contact c: contacts) { 
    sb.append(first ? "" : ","); 
    if (first) { 
     first = false; 
    } 
    sb.append(String.format("{\"id\":\"%s\", \"cell\":[\"%s\", \"%s\", \"%s\"]}",c.getId(), c.getId(), c.getContactType().getName() ,c.getContactValue())); 
} 
sb.append("]}"); 
return sb.toString(); 
} 
+0

您可以發佈您的jsp/UI頁面代碼嗎? –

回答

1

要解決與分頁,你需要更換的代碼

for (Contact c: contacts) { 
    sb.append(first ? "" : ","); 
    if (first) { 
     first = false; 
    } 
    sb.append(String.format("{\"id\":\"%s\", \"cell\":[\"%s\", \"%s\", \"%s\"]}",c.getId(), c.getId(), c.getContactType().getName() ,c.getContactValue())); 
} 

以下塊問題:

for (int i=limitStart; i<Math.min(records, limitStart+limitAmount); i++){ 
    Contact c = contacts[i]; 
    sb.append(first ? "" : ","); 
    if (first) { 
     first = false; 
    } 
    sb.append(String.format("{\"id\":\"%s\", \"cell\":[\"%s\", \"%s\", \"%s\"]}",c.getId(), c.getId(), c.getContactType().getName() ,c.getContactValue())); 
} 

另一種選擇是使用loadonce:true來讓jqGrid處理分頁和排序。在這種情況下,您不需要進行上述更改