我在ASP.NET页面中动态创建了很多Web控件。在某些回发场景中(当我单击LinkButton时),我想跳过加载旧的Web控件树并立即生成新树。不幸的是,当我生成新树时,旧树的视图状态被加载到其中。
我希望能够为此特定方案禁用视图状态加载过程,但在加载新树之后,视图状态应该正常工作。
我已经通过覆盖Web控件的LoadViewState方法解决了部分问题,但不幸的是,这会禁用控件的特定视图状态,而不是他的孩子(文本框,按钮等)。 / p>
有可能吗?
谢谢。
答案 0 :(得分:0)
您可以尝试在加载viewstate后创建新树,例如在Page_Load。
答案 1 :(得分:0)
您可以通过在将新数据绑定到树之前清除树的内容来以编程方式执行此操作。应该按照
的方式进行tree.nodes.clear()
然后你继续,好像树是空的,通过绑定它或通过以编程方式添加节点来添加数据
tree.Nodes.Add(New TreeNode("name of node"))
现在对于我正在使用的常规控件,如果不使用viewstate,则会遇到大量问题。您可以使用controlname.controls.clear以类似的方式从控制树中删除它们。现在问题主要是这些控制的附加还是你不想承担观点的负担?我建议,如果是后者,那么以编程方式清除控件并将viewstate服务器端存储在某处,以便可以从内存加载而不是使用带宽。
对于控件的动态加载,您需要确保新控件具有不同的ID。我在其中一个应用程序中所做的实际上是保留旧控件,使它们不可见并清除视图状态,然后在下一次调用时我实际将它们从树中删除。
答案 2 :(得分:0)