Telerik RadDock - ViewStateById

时间:2012-01-14 00:24:33

标签: asp.net telerik viewstate rad-controls

我正在开发一个网站,其中有一个带有多个RadDocks的主页,用户可以选择他们想要显示的特定控件,他们可以按照这样的方式进行排列。

在添加/移动/删除(控制树已更改)时,我收到了很多视图状态错误,并且唯一的解决方案似乎是为某些telerik控件(RadDock,RadDockLayout,RadDockZone等)创建包装类并应用[ViewStateModeById ]属性。

[ViewStateModeById]
public class RadDockById : RadDock

有没有人将RadDock与ViewStateModeById结合使用?是否可能会造成任何麻烦?

1 个答案:

答案 0 :(得分:2)

您遇到的与ViewState相关的问题很可能是由以下两件事引起的:

  1. 动态创建的RadDock不会添加到同一控件中。一旦将它们添加到RadDockZone,其他时间添加到RadDockLayout。这会导致导致问题的某些停靠点加载不正确的ViewState。
  2. 已关闭的停靠区已从页面中移除并移除。这再次更改了Page的Controls树,这在加载和保存ViewState时非常重要。
  3. 您可以在以下方面解决问题:

    • 禁用RadDockLayout或整个页面的ViewState。这样您就可以添加或删除控件,但如果动态更改属性,则可能存在一些问题。
    • 正如您所猜测的那样,创建一个继承自RadDock控件并将其标记为使用ViewStateModeById的新类。在this论坛帖子中,您可以找到有关此方法的更多信息。
    • 始终创建所有停靠点并将其添加到RadDockLayout。关闭的RadDocks应始终将可见属性设置为 false