Создание диапазона фильтра сетки с 2 текстовыми полями для последовательных NBR - PullRequest
0 голосов
/ 02 июня 2019

Получение этой ошибки в коде для: serialTo = $ ("input.serial-from", filterCell) .data ("kendoTextBox"). Value (),

Ошибка времени выполнения JavaScript: невозможно получитьвстречается свойство 'значение' с неопределенной или нулевой ссылкой

Я пробовал разные комбинации, но ни одна из них не работает.Я бы предположил, что "kendoTextBox" будет достаточно, но именно здесь он выдает ошибку.Кажется, что он работает с 'kendoNumericTexBox', или ошибок не возникает.Но я не хочу, чтобы в долгосрочной перспективе он был числовым, поскольку это строка символов, а не просто nbrs.(пример - «00000012» или «LOT00292»).Код, который я скопировал, был из решения для некоторых диапазонов дат с сайта Telerik.

'' 'jquery functionweenFilter (args) {var filterCell = args.element.parents (". K-filtercell");

    filterCell.empty();
    filterCell.html('<span style="display:flex; justify-content:center;"><span>From: </span><input  class="serial-from"/><span> To: </span><input  class="serial-to"/></span>');

    $(".serial-from", filterCell).kendoNumericTextBox({
        change: function (e) {
            var serialFrom = e.sender.value(),
                serialTo = $("input.serial-from", filterCell).data("kendoTextBox").value(),
                dataSource = $("#divParts").data("kendoGrid").dataSource;

            if (serialFrom & serialTo) {
                var filter = { logic: "and", filters: [] };
                filter.filters.push({ field: "SERIAL_NBR", operator: "gte", value: serialFrom });
                filter.filters.push({ field: "SERIAL_NBR", operator: "lte", value: serialTo });
                dataSource.filter(filter);
            }
        }
    });
    $(".serial-to", filterCell).kendoNumericTextBox({
        change: function (e) {
            var serialFrom = $("input.serial-to", filterCell).data("kendoTextBox").value(),
                serialTo = e.sender.value(),
                dataSource = $("#divParts").data("kendoGrid").dataSource;

            if (serialFrom & serialTo) {
                var filter = { logic: "and", filters: [] };
                filter.filters.push({ field: "SERIAL_NBR", operator: "gte", value: serialFrom });
                filter.filters.push({ field: "SERIAL_NBR", operator: "lte", value: serialTo });
                dataSource.filter(filter);
            }
        }
    });

};

'' ''

Просто нужна вторая пара глаз, чтобы увидеть, что я делаю неправильно или отсутствует в этом коде.Пользователи хотели бы ввести диапазон последовательных NBR для отображения в сетке деталей Kendo.вроде как от '000001' до '0000200'.

Еще раз спасибо

1 Ответ

1 голос
/ 03 июня 2019

Нет виджета кендо, представляющего обычное текстовое поле, поэтому любая попытка получить виджет с помощью .data("kendoTextBox") не будет работать.Однако можно стилизовать обычный элемент ввода так, чтобы он соответствовал другим элементам управления, просто добавьте класс k-textbox следующим образом:

<input type="text" value="" class="k-textbox" />

Если вы предпочитаете использовать виджет кендо, вы можете найти MaskedTextBox лучше подходит для вашего варианта использования, чем числовая версия (см. также документация ).Надеюсь, это поможет.

...