gpt4 book ai didi

sharepoint - SharePoint Web 部件中 CreateChildControls() 和 ApplyChanges() 方法的调用顺序

转载 作者:行者123 更新时间:2023-12-05 00:43:18 25 4
gpt4 key购买 nike

我正在为 SharePoint 创建一个 Web 部件。我有一个自定义编辑器部分,它覆盖了 SyncChanges() 和 ApplyChanges() 方法(等等)。

问题是当我在编辑模式下单击确定时,页面切换到浏览模式,但在 EditorPart 中更改并保存在 ApplyChanges() 方法中的数据(属性)没有更新。我必须再次“进入页面”(重新加载而不再次发布数据)才能看到所做的更改。

我调试了它并弄清楚它在做什么 - 在编辑模式下单击“确定”后,首先调用 WebPart.CreateChildControls(),然后调用 EditorPart.ApplyChanges()。因此数据已更新,但显示的是未更新的数据。

我在此行为中想到了其他一些东西:在 CreateChildControls() 中向我的 WebPart 添加一个特定控件会导致调用 WebPart.CreateChildControls() 和 EditorPart.ApplyChanges() 的顺序错误。在我的情况下,它会导致添加 WebDataTree 或 UltraWebTree 控件(来自 Infragistics),但它也可能发生在常见的 ASP.NET TextBox 上(如此处详细描述的相同问题:ASP.net forum thread)。

因此,如果我添加树,首先调用 CreateChildControls(),然后调用 ApplyChanges,因此它不是实际的。我必须刷新才能看到我在编辑器部分所做的更改。

如果我评论将树添加到控件集合中,则首先调用 ApplyChanges 并且一切正常(除非我需要该树:))...

有谁知道什么会导致这种奇怪的行为?

最佳答案

调用方法和事件的顺序是这样的:
创建子控件
应用更改
预渲染

因此,如果您访问 CreateChildControls 中的属性,则它们不是最新的。
所以我将访问 webpart 属性的代码从 CreateChildControls 移动到 OnPreRender
一切正常。

关于sharepoint - SharePoint Web 部件中 CreateChildControls() 和 ApplyChanges() 方法的调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com