为串行nbrs创建带有2个文本框的网格过滤器范围

时间:2019-06-02 15:39:17

标签: jquery kendo-ui kendo-grid

在以下代码上获取此错误: serialTo = $(“ input.serial-from”,filterCell).data(“ kendoTextBox”)。value(),

JavaScript运行时错误:无法获取未定义或空引用的属性“值”

我尝试了不同的组合,但似乎都无效。我假设“ kendoTextBox”就足够了,但这就是引发错误的地方。 似乎可以与“ kendoNumericTexBox”配合使用,否则不会出现任何错误。 但是,从长远来看,我不希望它成为数字,因为它不仅是nbrs,而且是字符串。 (例如-'00000012'或'LOT00292')。 我复制的代码来自Telerik网站上某个日期范围内的解决方案。

'''jquery     函数betweenFilter(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 个答案:

答案 0 :(得分:1)

没有可以代表普通文本框的kendo小部件,因此任何通过.data("kendoTextBox")检索小部件的尝试都将无法进行。可以设置普通输入元素的样式,使其与其他控件匹配,但是,只需添加k-textbox类,如下所示:

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

如果您宁愿使用kendo小部件,则可能会发现MaskedTextBox比数字版本更适合您的用例(另请参见documentation)。希望这会有所帮助。