Kendo Jquery Grid - Флажок множественного выбора Фильтрация в столбце значений через запятую - PullRequest
0 голосов
/ 08 июня 2019

Для Kendo Jquery Grid у меня есть столбец со значениями, разделенными запятыми, и для этого столбца мне нужен фильтр-флажок, он отображается в пользовательском интерфейсе, но не работает.Даже событие filterMenuOpen не вызывается.

Это Kendo Jquery Grid, и мы используем проверку и фильтрацию на стороне клиента.

 var grid = $("#grid").kendoGrid({
            dataSource: dataSource,
            filterable: true,
            filterMenuOpen: function (e) {
                debugger
                if (e.sender.dataSource.filter()) {
                    e.sender.dataSource.filter().filters.forEach(function (f) {
                        if (f.field == "Source") {
                            var checkbox = e.container.find("input[value='" + f.value + "']");
                            if (!checkbox[0].checked) {
                                e.container.find("input[value='" + f.value + "']").click()
                            }
                        }
                    })
                }
            },
            columns: [
                { field: 'placeuserId', hidden: true },
                { field: 'userLastName', title: 'Last Name', width: '125px', editor: userLastNameEditor },
                { field: 'userFirstName', title: 'First Name', width: '125px', editor: userFirstNameEditor },
                { field: 'userEmail', title: 'Email', width: '125px', editor: userEmailReadOnlyEditor },
                {
                    field: 'allowPrimaryplaceOnlyProviders',
                    title: 'Restrict to Primary place',
                    width: '125px',
                    template: '#if (allowPrimaryplaceOnlyProviders) {# <span>Yes</span> # } else {# <span>No</span> #}#',
                    editor: allowPrimaryplaceOnlyProvidersEditor,
                    filterable: {
                        extra: false,
                        operators: {
                            number: {
                                eq: "is equal to"
                            }
                        }
                    }
                },
                {
                    field: 'source',
                    title: 'Source',
                    width: '125px',
                    template: '#= getplaceusers(source, userplaceGroups) #',
                    editor: sourceReadOnlyEditor,
                    filterable: {
                        multi: true,
                        dataSource: [{
                            source: "Direct",
                        }, {
                            source: "Tacoma",
                        }, {
                            source: "Kirkland",
                        }]
                    },
                },
                {
                    command: [
                        { name: "edit", text: { update: "Save" } },
                        {
                            name: "Delete",
                            click: function (e) {
                                e.preventDefault();
                                var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
                                var message = "Are you sure you want to remove this user for this place?";
                                var dialog = company.Web.utility.displayConfirmationDialog(message, function (e) {
                                    grid.dataSource.remove(dataItem);
                                    grid.dataSource.sync();
                                    $(dialog).dialog("close");
                                }, { title: "Confirm Deletion" });
                            }
                        }],
                    hidden: isrole === 'False',
                    title: 'Action', width: '150px'
                }
            ],
            scrollable: false,
            filterable: company.Web.config.grid.filterable,
            sortable: company.Web.config.grid.sortable,
            pageable: company.Web.config.grid.pageable,
            dataBound: function (e) {
                debugger
                var sourceFilters = $('#grid').data('kendoGrid').dataSource._filter ?
                    $('#grid').data('kendoGrid').dataSource._filter.filters.filter(x => x.field == "Source").map(x => x.value) : [];

                if (sourceFilters.length > 0) {

                    sourceFilters.forEach(function (item) {
                        debugger
                        if (item === "Direct") {
                            $('#grid').data('kendoGrid').dataSource.filter({
                                field: "userplaceGroups",
                                operator: "eq",
                                value: ""
                            });
                        }
                        else {
                            $('#grid').data('kendoGrid').dataSource.filter({
                                field: "userplaceGroups",
                                operator: "contains",
                                value: item
                            });
                        }
                    });

                }

                //Selects all delete buttons
                $("#grid tbody tr .k-grid-Delete").each(function () {
                    var currentDataItem = $("#grid").data("kendoGrid").dataItem($(this).closest("tr"));
                    debugger
                    //Check in the current dataItem if the row is deletable
                    if (currentDataItem.source == '1') {
                        $(this).remove();
                    }
                })
            },
            editable: 'inline',
            edit: function (e) {
                if (!e.model.isNew()) {
                    selecteduser = { userId: e.model.userId };
                }
                var myValidator = e.sender.editable.validatable;
                e.container.find('.k-grid-update').click(function (e) {
                    var validationErrors = myValidator._errors;
                    var isInvalid = !myValidator.validate();
                    if (!selecteduser.userId) {
                        $.extend(validationErrors, { 'user': 'user is required.' });
                        isInvalid = true;
                    }
                    if (isInvalid) {
                        company.Web.utility.showErrors(validationErrors, $('#validationErrors'));
                        e.stopPropagation();
                        e.preventDefault();
                    } else {
                        $("#validationErrors").empty();
                    }
                });
            },
            cancel: function (e) {
                $("#validationErrors").empty();
            }
        }).data('kendoGrid');

Ниже приведен исходный код.Пожалуйста, помогите и предложите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...