Как сбросить выделение для нескольких страниц - PullRequest
0 голосов
/ 22 января 2019

В настоящее время я использую free-jqgrid 4.15.4, где у меня есть требование выбрать несколько строк на разных страницах, отправить электронное письмо участникам, а затем сбросить Выбор за один раз.Для этого я использую multiselect: true,multiPageSelection: true, $('#grid').jqGrid('resetSelection'); в функции обратного вызова ajax функции.

Но я думаю, что код resetSelection не работает для нескольких страниц, скорее он работает только для текущей страницы (убирает все отмеченные поля),

Вот скрипка , которая показывает реализацию resetSelection в сетке.

Вот код:

$(function () {
"use strict";
var mydata = [
    { Id: "10",  FirstName: "test",     LastName: "TNT", Gender: "Male" },
    { Id: "11",  FirstName: "test2",    LastName: "ADXC", Gender: "Male" },
    { Id: "12",  FirstName: "test3",    LastName: "SDR", Gender: "Female" },
    { Id: "13",  FirstName: "test4",    LastName: "234", Gender: "Male" },
    { Id: "14",  FirstName: "test5",    LastName: "DAS", Gender: "Male" },
];
$("#list").jqGrid({
    data: mydata,
    colNames: ['',/*'Id',*/ 'First Name', 'Last Name', 'Gender'],
    colModel: [
        {
            name: "act", template: "actions",
            formatoptions: {
                delbutton: false
            }
        },
        /*{
            label: "Id",
            name: 'Id',
            hidden: true,
            search: false,
        },*/
        {
            //label: "FirstName",
            name: 'FirstName',
            searchoptions: {
                searchOperators: true,
                sopt: ['eq', 'ne', 'lt', 'le','ni', 'ew', 'en', 'cn', 'nc'],
            }, search: true,
        },
        {
            //label: "LastName",
            name: 'LastName',
            searchoptions: {
                searchOperators: true,
                sopt: ['eq', 'ne', 'lt', 'ni', 'ew', 'en', 'cn', 'nc'],
            }, search: true,
        },
        {
            //label: "Gender",
            name: 'Gender',
            //search: true, 
            edittype: "select", editable: true,
            editoptions: {
                value: "Male:Male;Female:Female" //"Male:Male;Female:Female;" ,                                                                 
            },
            stype: "select",
            editrules: {
                custom: true,
                custom_func: function (value, colName, iCol)                                                    {
                    alert("The value to validate: " +value);
                    return [true];
                }
            }
        },
    ],
    /*onSelectRow: function (id) {
        if (id && id !== lastsel) {
            jQuery('#list').restoreRow(lastsel);
            jQuery('#list').editRow(id, true);
            lastsel = id;
        }
    },*/
    afterSaveCell: function (rowid, cmName, value, iRow, iCol) {
        var $self = $(this);

        if (cmName === "Gender") {
            $self.jqGrid("getGridParam", "selarrrow").forEach(function (id) {
                var item = $self.jqGrid("getLocalRow", id);
                if (id !== rowid && item.Gender !== value) {
                    $self.jqGrid("setCell", id, iCol, value, false, false, true);
                }
            });
        }
    },
    loadComplete: function (id) {
        var $self = $(this);
        if ($self.getGridParam('records') === 0) {

            //$('#grid tbody').html("<div style='padding:6px;background:#D8D8D8;'>No records found</div>");
        /*} else {
            var lastsel = 0;
            if (id && id !== lastsel) {
                $self.restoreRow(lastsel);
                $self.editRow(id, true);
                lastsel = id;
            }*/
        }
    },
    pager: true, //jQuery('#pager'),
    //loadonce: true,
    viewrecords: true,
    //gridview: true,
    //width: 'auto',
    height: 450, // '450px',
    iconSet: "fontAwesome",
    multiselect: true,
multiPageSelection: true,
    cellEdit:true,
rowNum: 2,
    emptyrecords: "No records to display",
    jsonReader: {
        repeatitems: false,
        id: "Id" //Id: "Id"
    },
    localReader: { id: "Id" },
    prmNames: { id: "Id" }
});
$('#list').jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: "cn", multipleSearch: true, searchOperators: true, search: true, loadFilterDefaults: true });
$('#list').jqGrid('navGrid', "#pager", {
    search: true, // show search button on the toolbar
    add: true,
    edit: false,
    del: false,
    refresh: true,
    reloadGridOptions: { fromServer: true }
}); 
$("#list").jqGrid("navButtonAdd", {
    caption: "",
    buttonicon: "fa fa-eraser",
    title: "Clear Selection",
    onClickButton: function (e) {
        var myGrid = $('#list');
        myGrid.jqGrid('resetSelection');          
    }
});
});

Единственное изменениеЯ вижу, что я использовал data: json в реальном jqgrid.

...