【问题标题】:ASP.NET GridView 'Page Not Found' on PostBackPostBack 上的 ASP.NET GridView“找不到页面”
【发布时间】:2010-02-03 14:07:06
【问题描述】:

我有一个 GridView,它(在一个特定实例中)将包含大约 5000 行,每行包含一个 DropDownList,其中包含大约 5000 个项目。自然,这需要永远加载并在我的盒子上抛出 OutOfMemory 异常。

没什么大不了的,我想。我将只启用分页。

好吧,当它绑定到其他数据时,它可以正常工作(对于同一个 gridview),但是当我将它绑定到这个特定的 DataSource(具有 5000 行的那个)时,就会出现问题。

当我第一次使用有问题的数据集加载 GridView 时,第一页显示得很好。但是,当我点击查看第二页时,我得到了错误:

错误 101 (net::ERR_CONNECTION_RESET): 未知错误。

在谷歌浏览器中。

还有错误:

Internet Explorer cannot display the webpage

在 IE 中。

任何关于为什么会发生这种情况的想法将不胜感激。

【问题讨论】:

    标签: c# asp.net gridview paging


    【解决方案1】:

    这可能只是一个超时问题。回发需要更长的时间,因为它必须处理 ViewState... 这绝对是巨大的。

    正如其他人所说,您的实施需要重新考虑。

    这些选项是否按字母顺序排列?如果是这样,那么一个相当简单的自动完成呢?键入两个字母,然后弹出以这两个字母开头的可用选项。雅虎库对此有很好的实现。

    如果您绝对肯定必须在下拉列表中有 5000 个选项...将此下拉列表移到 GridView 之外,这样它就不会出现在每一行上。基本上,用户将选择一行,然后使用这个“主”下拉菜单来选择数据。您甚至可以添加一个 javascript hack,将下拉列表移动到选择的行中,以便 显示下拉列表在每一行中,但实际上只有一个。

    【讨论】:

      【解决方案2】:

      查看运行 IIS 的事件查看器,您会看到任何未处理的 ASP.NET 错误。

      此外,包含 5000 多个条目的下拉菜单似乎不是控件的最佳选择...

      【讨论】:

      • 同意,您应该考虑以某种方式将该下拉列表(从网格视图)外部化。
      • 该项目背后的想法是一个客户有两条线或产品,每个产品有大约 10 个属性。这一特定属性采用大约 5000 个值之一,他们希望能够将第一行中具有值 A(5000)的属性 X 映射到第二行中具有值 B(5000)的属性 X。我当然愿意接受更好的控制设置的想法。因为我一开始对这个并不感到兴奋。
      【解决方案3】:

      只需检索您将在页面上显示的行,而不是检索 5000 行。

      此外,包含 5000 多个条目的下拉菜单似乎不是控件的最佳选择...

      +1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多