无法加载viewstate - 内容占位符

时间:2012-01-17 07:45:47

标签: c# asp.net viewstate contentplaceholder

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

  1. 我从下拉列表中选择网格1
  2. 点击添加新行,但不要取消或添加任何新行(让新行保持打开状态)
  3. 从下拉列表中选择grid2,让网格加载
  4. 再次从下拉列表中选择grid1
  5. 此时,grid1打开,但我得到以下javascript错误。

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

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

3 个答案:

答案 0 :(得分: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.

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

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

答案 1 :(得分:0)

如果没有更多信息,似乎您的控件在回发后不再出现在页面上。 您是在删除rad网格还是仅在需要时将其显示? 它也可以是您动态添加它们。这可能会导致radgrids出现问题。

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

答案 2 :(得分:0)

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

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