gpt4 book ai didi

java - 用于搜索的 Jqgrid Controller 调整

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:16 24 4
gpt4 key购买 nike

我一直在梳理 jqgrid 的 wiki,但我似乎不知道如何更改 Controller 中的逻辑以供 jqgrid 进行搜索。

我假设搜索将使用 jqgrid 中指定的相同 URL。这是我的 jqgrid 调用的 Action 逻辑。我正在使用 spring 3.0 及其 java Controller 。

@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 减速

    $("#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
}
);

这是我的 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:{}}
}
]

事实上,默认情况下搜索使用 searchGrid 方法。在 post 数组中,存在 _search: truefilters: {"groupOp":"AND","rules":[{"field":"firstName","op":"eq","data":"Anil"}]} 。searchField、searchOper 和 searchString 均为空,但存在于 epost 数组中。

我需要做什么才能使搜索正常工作?

我是否必须使用 json 解析器和过滤器数组将 json 解析为 Java,然后通过添加 where 子句来更改查询并使用 Json 对象中的值?

jqgrid 是否查询自己的数据对象而不是返回服务器并启动新查询?

我不太确定我必须做什么,请提供某种形式的指导。

最佳答案

我自己不使用Spring,但是the post在我看来包含您需要的信息。

一般来说,如果您使用 Advance Searching对话框 (multipleSearch: true) 或工具栏 使用 stringResult: true 进行搜索,jqGrid 向服务器发送附加参数 filters,其格式描述 here 。一个参数filters可以包含有关多个过滤器的信息。因此,您必须将 JSON 字符串转换为对象并分析该对象以构造 SELECT 语句的 WHERE 部分的某些类型。具体的实现取决于您用于评估数据库的技术。

关于java - 用于搜索的 Jqgrid Controller 调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9874140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com