【问题标题】:Filter the grid data is not working in FF(mozilla) and IE过滤网格数据在 FF(mozilla) 和 IE 中不起作用
【发布时间】:2013-09-04 06:45:52
【问题描述】:

我正在使用 kendo ui 控件。我的功能是根据日期时间和下拉选择过滤网格。这适用于 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 中调试时,我没有发现任何错误,任何人都可以查看代码并请告诉我我错在哪里?

【问题讨论】:

  • 要检查的事情,页面 html 结束标签,FF 和 IE 在这里往往更相似,页面加载完成,分号插入,事件传播,点击处理程序中的返回 false 可能会改变那个。
  • 嗨,谢谢您的回复,页面 html 结束标签不正确,它显示错误,但我没有收到任何错误。我怎么能找到?

标签: kendo-ui kendo-grid


【解决方案1】:

我一直在测试您的代码,但没有发现任何问题,除了您在末尾有一个额外的),但这可能是因为该函数是从更大的代码部分中删除的。

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

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

编辑:编码

您需要确保网页的编码正确。请确保这两行存在于html 代码的head 部分。如果您使用 ASP.NET MVC,您可以将这两个文件添加到 Views\Shared\_Layout.cshtml 文件中。如果您使用 ASP.NET 表单,您可以将它们添加到您的主文件中。如果您使用 PHP,您只需将它们放在 head 部分。

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">

【讨论】:

  • 好的 Ohlin,我给出了我的总“清除按钮”代码和验证,请检查一次。我将编辑代码。
  • 您能否更好地解释什么是行不通的。什么都不管用还是?你希望它做什么?
  • 在我的项目中,我有一个网格用于使用两个 kendodatetimepicker 和 4 个 kendodropdownlist 过滤数据。而使用上述代码的 chrome 中的过滤器工作正常,但在 IE 和 FF 中没有
  • 嗨,Ohlini,上面已经解释过了,满意吗?如果您需要有关此功能的更多说明,请告诉我。
  • 这是我得到的错误错误:HTML 文档的字符编码未声明。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。 localhost:81/max.html0号线
猜你喜欢
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多