在我的jqgrid分页工作完美,直到我搜索特定的记录,但搜索分页后不起作用,它显示每页只有1到10条记录而不是1-10,11-20 .... .... 代码:
jQuery(grid_selector).jqGrid({
subGridRowExpanded: function (subgridDivId, rowId) {
},
url: '@Url.Action("GetAllUsers","AdminIndex")',
datatype: 'json',
//contentType: "application/json; charset-utf-8",
mtype: 'POST',
height: 'auto',
colNames:['UserId','FirstName', 'LastName','Email','UserName','Password','ConfirmPassword','MobileNumber','Designation'],
colModel:[
{name:'UserId',index:'id', key: true, index:'id', width:20, sorttype:"int", editable: true, editable: true, sortable: true, search: true, searchrules: { required: true},searchoptions: { sopt: ['eq','ne']}},
{name:'FirstName',index:'fname', search: true, width:30,editrules: { required: true},editable: true,editoptions:{size:"20",maxlength:"30"},searchoptions: { sopt: ['eq','ne']}},
{name:'LastName',width:30, editable:true,editrules: { required: true}, search: false,editable: true},
{name:'Email',index:'Email', width:45, editable: true,search:true,editable:true,editrules: { required: true,email:true},searchoptions: { sopt: ['eq','ne']}},
{name:"UserName",index:'Name',sortable:false,width:30, editable:true,search:true,editrules: { required: true},searchoptions: { sopt: ['eq','ne']}},
{name:"Password",sortable:false,width:30, edittype:'password', editable: true,search:true,editrules: {custom:true, custom_func:mypasscheck,edithidden:true, required: true},editoptions: {minlength:6,maxlength:20},hidden: true},
{name:"ConfirmPassword",sortable:false,width:40, edittype:'password',editable: true,search:false,editrules: {custom:true, custom_func:myconfirmpasscheck,edithidden:true, required: true},editoptions: {minlength:6,maxlength:20},hidden:true},
{name:"MobileNumber",sortable:false,width:40, editable: true,search:false,editrules: {required: true},number:true, required: true},
{name:"Designation",sortable:false,width:40, editable: true,search:false,editrules: { required: true}},
],
viewrecords : true,
rowNum:10,
rowList:[10,20,30,40],
loadonce:false,
pager : pager_selector,
sortable: true,
sortname: 'id',
sortorder: 'desc',
altRows: true,
autowidth: true,
//toppager: true,
loadonce:false,
multiselect: true,
//multikey: "ctrlKey",
multiboxonly: true,
caption:'Users Information',
loadComplete : function() {
var table = this;
setTimeout(function(){
styleCheckbox(table);
updateActionIcons(table);
updatePagerIcons(table);
enableTooltips(table);
}, 0);
},
});
搜索表单
{
//search form
recreateForm: true,
afterShowSearch: function(e){
var form = $(e[0]);
form.closest('.ui-jqdialog').find('.ui-jqdialog-title').wrap('<div class="widget-header" />')
style_search_form(form);
},
searchoptions: { sopt: ['eq', 'ne'] },
afterRedraw: function(){
style_search_filters($(this));
}
,
multipleSearch: true,
closeAfterSearch: true
/**
multipleGroup:true,
showQuery: true
*/
},
控制器代码:
[HttpPost]
public JsonResult GetAllUsers(JqGridRequest jRequest)
{
UsersContext db = new UsersContext();
var Records = from user in db.UserProfiles.ToList()
where user.Active == 1 && user.dead == 0
select new
{
user.UserId,
user.UserName,
user.FirstName,
user.LastName,
user.Email,
user.Designation,
user.Password,
user.MobileNumber,
};
int pageIndex = Convert.ToInt32(jRequest.PageIndex) + 1;
int pageSize = jRequest.RecordsCount;
int startRow = (pageIndex * pageSize) + 1;
int totalusers = Records.Count();
int totalPages = (int)Math.Ceiling((float)totalusers / (float)pageSize);
Records = Records.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToArray();
if (jRequest.Searching)
{
switch (jRequest.SearchingFilters.Filters[0].SearchingName.ToLower())
{
case "id":
int sId = Convert.ToInt32(jRequest.SearchingFilters.Filters[0].SearchingValue);
//string sName = jRequest.SearchingFilters.Filters[0].SearchingValue;
switch (jRequest.SearchingFilters.Filters[0].SearchingOperator.ToString().ToLower())
{
case "eq":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId == sId);
break;
case "ne":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId != sId);
break;
case "lt":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId < sId);
break;
case "le":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId <= sId);
break;
case "gt":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId > sId);
break;
case "ge":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserId >= sId);
break;
}
break;
case "email":
string sEmail = jRequest.SearchingFilters.Filters[0].SearchingValue.ToString();
switch (jRequest.SearchingFilters.Filters[0].SearchingOperator.ToString().ToLower())
{
case "eq":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.Email == sEmail);
break;
case "ne":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.Email != sEmail);
break;
}
break;
case "fname":
string sFName = jRequest.SearchingFilters.Filters[0].SearchingValue.ToString();
switch (jRequest.SearchingFilters.Filters[0].SearchingOperator.ToString().ToLower())
{
case "eq":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.FirstName == sFName);
break;
case "ne":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.FirstName != sFName);
break;
}
break;
case "name":
string sName = jRequest.SearchingFilters.Filters[0].SearchingValue.ToString();
switch (jRequest.SearchingFilters.Filters[0].SearchingOperator.ToString().ToLower())
{
case "eq":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserName == sName);
break;
case "ne":
Records = db.UserProfiles.Select(
a => new
{
a.UserId,
a.UserName,
a.FirstName,
a.LastName,
a.Email,
a.Designation,
a.Password,
a.MobileNumber,
}).Where(p => p.UserName != sName);
break;
}
break;
}
}
var jsonData = new
{
total = totalPages,
page = pageIndex,
records = totalusers,
rows = Records
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}