在mvc中搜索后,jq grid分页不起作用

时间:2017-04-14 09:17:09

标签: asp.net-mvc-4 jqgrid

在我的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);


    }

0 个答案:

没有答案