Jqgrid过滤不适用于完整的单词和数据

时间:2013-04-04 11:07:43

标签: asp.net-mvc-4 jqgrid

过滤jqgrid客户端。我面临的问题是:

  1. 过滤只能在两列(以下代码中的项目参考和项目名称)中使用,并且只能使用或部分单词。

  2. 过滤不适用于另一个表中的数据。我使用两个数据表来检索数据。仅适用于直接表不适用于引用的表数据。

  3. 我可以在没有Loadonce的情况下进行搜索。因为它不允许重新加载

  4. 我尝试过以下代码让我知道我在哪里做错了

    在视图中:

      $(document).ready(function () {
        $("a.button").button();
        var url = '@Url.Action("ListAllProjects")' + '?s_partId=' + '@ViewBag.PartId';
        var colNames = ['<input type="checkbox" onclick="CheckAll(this.checked,\'chkOF_\',event);" name="checkall">',
            'Status',
            'Project Ref',
            'Project Name',
            'Customer',
            'CreatedBy',
            'Creation Date',
            'Last Modified',
            'LastModifiedDate',
            'Edit'];
        var colModel = [
            { name: 'ProjectId', index: 'ProjectId', align: 'left', formatter: checkFormatter, width: 20, search: true },
            { name: 'ProjectStatusId', index: 'ProjectStatusId', edittype: 'image', align: 'left', width: 70, formatter: imageFormatter, search: true },
            { name: 'ProjectReference', index: 'ProjectReference', align: 'left', width: 100, formatter: 'showlink', formatoptions: { "baseLinkUrl": "/Ordernew/Home" }, search: true },
            { name: 'ProjectName', index: 'ProjectName', align: 'left', width: 150, formatter: 'showlink', formatoptions: { "baseLinkUrl": "/Ordernew/Home" }, search: true },
            { name: 'CustomerName', index: 'CustomerName', align: 'left', width: 150, search: true },
            { name: 'CreatedBy', index: 'CreatedBy', align: 'left', width: 150, search: true },
            { name: 'CreationDate', index: 'CreationDate', align: 'left', width: 100, formatter: 'date', formatoptions: { srcformat: 'ISO8601Long', newformat: 'd-M-y h:m A' }, search: true },
            { name: 'LastModifiedBy', index: 'LastModifiedBy', align: 'left', width: 100, search: true },
            { name: 'LastModifiedDate', index: 'LastModifiedDate', align: 'left', width: 100, formatter: 'date', formatoptions: { srcformat: 'ISO8601Long', newformat: 'd-M-y h:m A' }, search: true },
            { name: 'StatusId', index: 'ProjectStatusId', formatter: myCustomFormatter, align: 'left', width: 70, search: true },
        ];
        var sortname = 'ProjectStatusId';
        var sortorder = 'desc';     
        SetGrid('#jqgprojectnew', '', url, colNames, colModel, sortname, sortorder, -1,'#count',true);
    
        $("#jqgprojectnew").jqGrid('filterToolbar',
                {
                    stringResult: true,
                    searchOnEnter: false,
                    defaultSearch: "cn"
                });
    
    
    
    
    });
    

    并设置这样的网格,这对所有网格都是通用的。但我只需搜索上面的网格:

    function SetGrid(v_gridCtrl,v_pagingCtrl, v_url, v_colNames, v_colModel, v_sortname, v_sortorder, v_Pagesize,Count,Loadonce) {
    
    if (v_Pagesize == undefined)
        v_Pagesize = 100;
    
    $(v_gridCtrl).jqGrid({
        //url from wich data should be requested
        autowidth: true,
        url: v_url,
        //type of data
        datatype: 'json',
        //url access method type
        mtype: 'POST',
        //columns names
        colNames: v_colNames,
        //columns model
        colModel: v_colModel,
        //pager for grid
        pager: $(v_pagingCtrl),
        //enable dynamic scrolling
        //scroll: true,
        //enable npage request parameter
        prmNames: { npage: 'npage' },
        //number of rows per page
        rowNum: v_Pagesize,
        rowList: [10, 30, 60, 90, 100, 150, -1],
        loadComplete: function () {
            $("option[value=-1]").text('All');
            $(Count).html($(v_gridCtrl).getGridParam("reccount"));
        },
        loadonce:Loadonce,
        //initial sorting column
        sortname: v_sortname,
        //initial sorting direction
        sortorder: v_sortorder,
        //we want to display total records count
        viewrecords: true,
        //grid height
        height: 400,//'100%',
        //width: '100%',
        scrollOffset: 0,
        shrinkToFit: true,
    
    
    });
    

    }

    添加记录的代码:

      public bool AddUpdateOrderField(ProjectViewModelNew obj)
        {
    
    
    
                    var rec = new Project
                                  {
                                      ProjectID = Guid.NewGuid(),
                                      ProjectDetail = obj.ProjectDetail,
                                      CustomerId =obj.Id,
                                      ProjectName = obj.ProjectName,
                                      CreatedBy = new UserManager().Userid(),
                                      CreationDate = DateTime.Now,
                                      LastModifiedBy = new UserManager().Userid(),
                                      ProjectRef = obj.ProjectRef,
    
                                      ProjectStatusId = obj.ProjectStatusId,
                                      LastModifiedDate = DateTime.Now,
                                      OwnerID = new Guid("BEBB9E61-1F06-4762-80D8-5E4D554EAEB5")
    
                                  };
                    _context.Projects.AddObject(rec);
                    _context.SaveChanges();
    
                    return true;
    
        }
    

1 个答案:

答案 0 :(得分:1)

如果您正在使用本地搜索,则应设置loadonce =true并且无关紧要,从您将数据提取到jqgrid的表数量。如果您想制作loadonce=false,,那么您应该将搜索条件发布到服务器并执行数据库搜索。

并尝试删除stringResult: true,以解决您的第一个问题

要使搜索大小写不敏感,请将其添加到jqgrid属性:

ie;

    $(v_gridCtrl).jqGrid({
    //url from wich data should be requested
    autowidth: true,
.....
 ignoreCase:true,
...}

要重新加载网格,请尝试以下代码:

$(v_gridCtrl).trigger('reloadGrid',[{page:1}]);