0

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

  1. 过滤仅在两列(以下代码中的项目引用和项目名称)和单词的一部分或部分起作用。

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

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

我尝试使用以下代码让我知道我做错了什么

鉴于:

  $(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;

    }
4

1 回答 1

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}] );

于 2013-04-08T09:00:07.403 回答