过滤网格数据不适用于FF(mozilla)和IE

时间:2013-09-04 06:45:53

标签: kendo-ui kendo-grid

我正在使用kendo ui controls.my功能是根据日期时间和下拉选择过滤网格。这适用于chrome,但不适用于FF和IE。

                var gridResult = $('#Grid').data("kendoGrid");

                    var condition = {
                        logic: "and",
                        filters: [
                            { field: "Category", operator: "equals", value: $("#nw").val() },
                            { field: "Device", operator: "equals", value: $("#pro").val() },
                            { field: "Orig", operator: "equals", value: $("#work").val() },
                            { field: "Term", operator: "equals", value: $("#network").val() }
                        ]
                    };
                    if (mindate !== null) {
                        condition.filters.push({ field: "Time", operator: "ge", value: new Date(mindate) });
                    }
                    if (maxdate !== null) {
                        maxdate = new Date(maxdate);
                        maxdate.setHours(23, 59, 59, 999);
                        condition.filters.push({ field: "Time", operator: "lt", value: maxdate });
                    }
                    gridResult.dataSource.filter(condition);

                return false;
            });

        $('#fromdatetimepicker').attr('readonly', false);
        $('#todatetimepicker').attr('readonly', false);
      }

当我在firefox中调试时,我没有找到aby bug,任何人都可以查看代码,请告诉我哪里错了?

1 个答案:

答案 0 :(得分:0)

我一直在测试你的代码而且我找不到它的任何问题,除了你最后有一个额外的),但这可能是因为该函数是从更大的代码段中删除的。

然而,有几件事可能导致这个问题,并且有很多代码丢失,所以我不能肯定地说。有些浏览器试图通过忽略您所犯的错误来帮助您。这可以使它在Chrome中运行,但不能在FF和IE中运行。处理此问题的最佳方法是遍历代码并添加验证,以便在每次调用Filter方法时确认值。以下是我给你的建议:

  • 在Internet Explorer中调试时,请使用IE 11并使用F12调试工具。
  • 您检查mindatemaxdate是否为空,但如果它们是undefined或包含空值,则会通过该测试并将其添加到过滤器中即使他们没有设置。
  • 在将mindatemaxdate添加到过滤器之前,您没有检查date$("#network").val()是否为有效日期以及您是否能够成功创建JavaScript head变量。这可能是错误的根源,具体取决于脚本中的其他代码。
  • 您可以直接在过滤器中使用html等中的值而不验证它们,这可能会在将来导致问题。但这不会导致此错误。

编辑:编码

您需要确保网页的编码正确无误。请确保Views\Shared\_Layout.cshtml代码的head部分中存在这两行。如果使用ASP.NET MVC,则可以将这两个文件添加到<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta content="utf-8" http-equiv="encoding"> 文件中。如果使用ASP.NET Forms,则可以在Masterfile中添加它们。如果你使用PHP,你只需将它们放在{{1}}部分。

{{1}}