行:5571错误:没有足够的存储空间来完成此操作

时间:2015-06-15 18:48:41

标签: javascript jquery jqgrid internet-explorer-9

我收到了#34;没有足够的存储空间来完成此操作。"尝试在jqGrid中添加数据(20K记录)时出错。这个问题发生在IE 9中。

enter image description here

enter image description here

代码:

//此行将20k记录添加到jqgrid

    $.when(GetDataBySelectedCode())
           .done(function (ResultData) {
                  if (ResultData!= null) {//able to get result here
                      BindDataInGridNoLimit(ResultData);
                    } 

      }).fail(function (xhr, textStatus, errorThrown) {                
         if (textStatus != 'abort') {
        //todo: error message               
     }
  });

function BindDataInGridNoLimit(data)
{
   DataGrid[0].addJSONData(data);//fails while adding data
}

调用堆栈

enter image description here

环境:

  • ASP.NET Web窗体,Visual Studio 2012,jqGrid 4.6.0,IE 9,jquery 1.11.1
  • 在jqGrid中,我没有启用分页,因为它是要求的 最终用户。

观察:

a)具有20K记录的相同代码在Chrome中运行良好。 b)在IE 9中,几百条记录的相同代码工作正常。

问题:

此问题是否与jqgrid和IE 9组合有关?如何解决这个问题?

感谢任何建议/解决方案。

1 个答案:

答案 0 :(得分:1)

在我看来,您尝试添加大量数据,无需本地分页。它没有真正的意义,它很慢,用户必须滚动到下方查看数据。使用小rowNum值会更有效,它会指定页面的大小并使用datatype: "local"loadonce:truedatatype: "jsonstring"。用户需要点击"下一页"按钮以查看下一部分数据。这是一个小缺点,但使用滚动条滚动网格行也需要时间。一个人将拥有的主要优势:数据将作为纯JavaScript数据在本地保存。你将没有DOM大小的问题(没有这样的错误)。您获得的最重要的优势:更好的性能。我怀疑用户几乎可以立即看到第一页数据,快速停留在行上,数据滚动也很快。

我建议你打开一个树形演示,它们都在jqGrid中加载90000行数据。 The first demo显示25行,您可以轻松滚动4500页数据。 The second grid从90000行显示1000,用户可以向下滚动查看1000行,用户可以使用本地分页查看90页(每页1000行)。如果您尝试打开the last demo,尝试同时显示所有90000行,您将等待很长时间并在结束时收到错误消息。

我很清楚,我的建议意味着更改代码和更改用户界面。另一方面,应该清楚的是,在网格中填充数千行没有多大意义。没有人会滚动并读取所有数据。 2-5页的数据绝对够用。网格应该只有过滤器工具栏,以便用户可以填充数据并显示数据的小部分真的很有趣