0

我的母版页有一个内容占位符,我的页面有 2 个 rad 网格,位于单独的 asp:panels 中。在下拉选择中,相应的网格被加载到页面中。

  1. 我从下拉列表中选择网格 1
  2. 单击添加新行,但不要取消或添加任何新行(让新行保持打开状态)
  3. 从下拉列表中选择grid2,让网格加载
  4. 再次从下拉列表中选择 grid1

此时,grid1 打开,但我收到以下 javascript 错误。

Microsoft JScript 运行时错误:Sys.WebForms.PageRequestManagerServerErrorException:无法加载视图状态。正在加载视图状态的控制树必须与在先前请求期间用于保存视图状态的控制树匹配。例如,当动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。

关于这个问题的任何想法。我在一些论坛上读到这个问题可能是在单个内容占位符中使用相同类型的控件。关于解决方案的任何建议???

4

3 回答 3

1

相同内容占位符中的相同类型的控件不是问题。

Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.

当您动态添加和删除控件时,最常发生这种情况。仅仅改变可见性不应该给你一个错误。

也许显示您的代码的某些部分会有所帮助。

于 2012-01-17T08:18:57.050 回答
0

在没有更多信息的情况下,似乎您的控件在回发后不再出现在页面上。您是要删除 rad 网格还是只是在需要时使它们可见?也可以是您动态添加它们。我认为这可能会导致 radgrids 出现问题。

我认为最好的解决方案是在用户做出新选择时使用 One grid 来操作它。如果网格彼此非常不同,我会添加多个并在从列表中选择时使它们可见(当您有超过 3 个选项时不要这样做)。

于 2012-01-17T08:01:32.230 回答
0

在重新绑定它们之前,我在下拉选择更改时清除了两个网格的控件。它解决了我的问题。

radgrid1.Controls.Clear(); radgrid2.Controls.Clear();

于 2012-01-19T09:49:53.897 回答