私はjqgrid用のwikiをコーディネートしていますが、jqgridの検索ロジックを変更する方法はわかりません。検索のためのJqgridコントローラの調整
jqgridで指定されたURLと同じURLが検索されると仮定します。ここに私のjqgridによって呼び出されるアクションロジックがあります。私は春3.0とそのJavaコントローラを使用しています。
@RequestMapping(value = "studentjsondata", method = RequestMethod.GET)
public @ResponseBody String studentjsondata(HttpServletRequest httpServletRequest) {
Format formatter = new SimpleDateFormat("MMMM dd, yyyy");
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<Person> students = Person.findStudentPeopleOrderByColumn(true, column, orderType, limitStart, limitAmount).getResultList();
long countStudents = Student.countStudents();
double tally = Math.ceil(countStudents/10.0d);
int totalPages = (int)tally;
long records = countStudents;
StringBuilder sb = new StringBuilder();
sb.append("{\"page\":\"").append(page).append("\", \"records\":\"").append(records).append("\", \"total\":\"").append(totalPages).append("\", \"rows\":[");
boolean first = true;
for (Person s: students) {
sb.append(first ? "" : ",");
if (first) {
first = false;
}
sb.append(String.format("{\"id\":\"%s\", \"cell\":[\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\"]}",s.getId(), s.getId(), s.getFirstName(), s.getLastName(), formatter.format(s.getDateOfBirth().getTime()), s.getGender(), s.getMaritalStatus()));
}
sb.append("]}");
return sb.toString();
}
、ここで私のnavGridのdeclerationはここ
$("#studentGrid").jqGrid('navGrid', "#pager", {edit:false,add:false,del:false,search:true},{ },{ },{ },
{
sopt:['eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew'],
closeOnEscape: true,
multipleSearch: true,
closeAfterSearch: true
}
);
である、それは検索がtrhe searchGridメソッドを使用して、デフォルトでは、あるとして私colModelとCOLNAMES
colNames:['id','First Name', 'Last Name', 'Date Of Birth', 'Gender', 'Marital Status'],
colModel:[
{name:'id',index:'id', width:15},
{name:'firstName',index:'firstName', width:30, formoptions:{elmprefix:'(*) '}, editable:true, edittype: 'text', editrules:{required:true}},
{name:'lastName',index:'lastName', width:30, formoptions:{elmprefix:'(*) '}, editable:true, edittype: 'text',editrules:{required:true}},
{name:'dateOfBirth',index:'dateOfBirth', width:30, formoptions:{elmprefix:'(*) '},editrules:{required:true}, editable:true, edittype: 'text',
editoptions: {
dataInit: function(element) {
$(element).datepicker({dateFormat: 'MM dd, yy'})
}
}
},
{name:'gender',index:'gender', width:30, formoptions:{elmprefix:'(*) '}, editable:true, editrules:{required:true}, edittype: 'select',
editoptions:{value:{}}
},
{name:'maritalStatus',index:'maritalStatus', width:30, formoptions:{elmprefix:'(*) '}, editable:true, editrules:{required:true}, edittype: 'select',
editoptions:{value:{}}
}
]
です。ポストアレイでは_search: true
とfilters: {"groupOp":"AND","rules":[{"field":"firstName","op":"eq","data":"Anil"}]}
が存在します。 searchField、searchOperおよびsearchStringはすべて空ですが、epost配列にあります。
検索を有効にするにはどうすればよいですか?
jsonパーサとフィルタ配列を使用してjsonをJavaに解析し、where句を追加してクエリを変更し、Jsonオブジェクトの値を使用する必要がありますか?
jqgridは、独自のデータオブジェクトを照会してサーバーに戻り、新しいクエリを起動しますか?
私は何をしなければならないか分からないので、何らかのガイダンスを提供してください。
あなたのコードでは、 'httpServletRequest.getParameter(" filters ")'や 'httpServletRequest.getParameter(" _ search ")'のようなコードは表示されません。 – Oleg
値をどうしたらいいのか分からないので、私はまだ変更を行っていません。私はそれを私のファインダーにargとして渡し、それをjsonという形でjavaに構文解析しますか?私は検索機能を有効にするためのアクションにどのパターンが通常使用されているのかよくわかりません。上記のように値にアクセスできます。 – Binaryrespawn
私はこのページを見てきました。http://blog.brzezinka.eu/webmaster-tips/jquery/how-to-enable-the-search-functionality-in-jqgridどこでPHPで行われたのですか、これはjavaで行いますか?これは通常行われている方法ですか? – Binaryrespawn