我们有一个渲染列出当前项目中TreeSelect中的选定项目。在我们的例子中,我们称之为“标签”(1)
我们在组件中添加了一个Field Editor按钮,让编辑器更改所选项目。 (2)(如例如Adding a custom component所述)
当编辑器点击(2)编辑器窗口(3)时,它会在对话框中打开。编辑器可以使用TreeSelect选择不同的项目(在我们的例子中称为标签)。
当编辑按下确定按钮(4)时,将设置值。
现在问题:
当编辑器按下“保存”按钮时,值实际上是在存储时设置的,但我们希望页面(1)上的列表在编辑器按下确定按钮(4)时立即反映设置项目,即之前必须实际保存整个项目。
我们如何实现这一目标?
(我正在与Sitecore支持联系,但到目前为止我还没有得到任何答案......)
更新 经过与支持人员的大量对话后,我们仍然没有有用的解决方案。
我们尝试将其转换为显示链接的字段渲染器。 有用的是:
<command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/>
并设置单击按钮到webedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField
,其中guid指向该字段并且在它上面设置了一个“图标”。)什么行不通的是:
支持的问题变成了一个功能请求,让服务器参与渲染字段,而不仅仅是向JavaScript发送新值来更新它。服务器执行第一次渲染,因此当它已经参与更新时,应该允许它在以下时间进行渲染。
我们决定不花更多的时间在这上面(我们还有其他事情要做。)并且编辑经验不好,因为在编辑器实际保存项目之前,该字段不会更新。
我们仍然没有适合此问题的解决方案。如果你想继续努力并希望引用我的问题,那就是439059。
答案 0 :(得分:0)
这可能在这里没用。我在普通网站上做过这个,但在Sitecore中没有。但是,这是一种可能性......
这种情况下您可以将回调函数传递给子弹出窗口。此回调将导致调用者/父窗口重新读取/重新加载刚刚更新的信息。
实施例: 用户按(2)打开编辑器窗口(3)(打开编辑器窗口,并将回调函数作为参数传递) 用户按“确定”按钮(4)。 “OK”按钮事件处理程序更新更改,然后调用Callback函数,该函数重新加载现在更新的信息,并关闭弹出窗口。 弹出窗口关闭后,父窗口现在会显示弹出/编辑器刚刚更新的信息。
这需要一些客户端javascript(jquery)开发,但它通常是非常可行的。