如何在Sitecore页面编辑器中钩住保存事件?

如何在Sitecore页面编辑器中钩住保存事件?,sitecore,page-editor,Sitecore,Page Editor,我正在为我的内容作者创建一个自定义编辑控件,以便在页面编辑器中使用。当然,这意味着当用户单击save按钮时,我希望我的控件将数据保存到项目中 这是怎么做到的?我查阅了大量的文档。。。感觉我错过了一些基本的东西。我当然可以在这里添加自己的事件处理程序 注意:我想在页面编辑器中进行内联编辑。这似乎是Sitecore缺少的一个非常基本的功能。我当然可以看到在复选框字段中使用复选框条目(多么疯狂的想法?!)。唯一用于编辑的内置选项似乎是textbox或RichText编辑器。我是否遗漏了一些明显的内容?

我正在为我的内容作者创建一个自定义编辑控件,以便在页面编辑器中使用。当然,这意味着当用户单击save按钮时,我希望我的控件将数据保存到项目中

这是怎么做到的?我查阅了大量的文档。。。感觉我错过了一些基本的东西。我当然可以在这里添加自己的事件处理程序


注意:我想在页面编辑器中进行内联编辑。这似乎是Sitecore缺少的一个非常基本的功能。我当然可以看到在复选框字段中使用复选框条目(多么疯狂的想法?!)。唯一用于编辑的内置选项似乎是textbox或RichText编辑器。我是否遗漏了一些明显的内容?

当我需要构建自定义控件时,我会在正常模式下使用它,然后在用户处于编辑模式时只使用sc:Text(或其他内容)。这样我就可以不费吹灰之力地获得所有Sitecore的好处。一种方法是使用多视图,它看起来有点像:



然后在代码隐藏中,确保为正确的模式选择正确的视图

您还可以使用字段编辑器弹出一个弹出窗口来编辑所需的信息。 比如说,你做了:


因此,当有人在PageEditor(编辑)模式下将鼠标悬停在你放在编辑框中的html上时,他们会得到一个弹出菜单。在此菜单中,您可以显示任意数量的命令,正常的命令是一个“编辑”选项,然后弹出一个对话框,您可以从树中的任何内容项中编辑所需的任何字段

如何配置可用选项?通过Buttons属性,它必须指向core数据库中/sitecore/content/Applications/WebEdit/Edit框架按钮下的一个文件夹(以默认文件夹为例)。也可以在其中设置要编辑的字段。在上面的代码片段中,Sitecore希望找到一个名为MyThing的文件夹


它如何知道从哪个项目编辑字段?如果不指定任何内容,它将是Context.Item,如果需要其他内容,请使用editFrame控件的datasource属性并将其设置为例如某个ID。

确定。。。经过Sitecore支持部门的帮助,我终于找到了这个问题的答案。为了让页面编辑器获得字段的新值,需要调用Sitecore.WebEdit.setFieldValue()javascript函数。这将创建一个隐藏的输入字段,当单击“保存”或“保存/关闭”按钮时,页面编辑器将读取该字段

//RenderItem是有问题的项,DropListField是
//要渲染的目标水滴列表字段
string itemID=RenderItem.ID.tosortid().ToString();
字符串fieldID=RenderItem.Fields[DropListField].ID.ToSortId().ToString();
string language=RenderItem.language.ToString();
string version=RenderItem.version.ToString();
string revision=RenderItem[fieldid.revision]。替换(“-”,string.Empty);
ddlist.Attributes.Add(“onchange”,string.Format(“var ddl=getElementById({5}”);var itemURI=new Sitecore.itemURI({0},{1},{2},{3}”);Sitecore.WebEdit.setFieldValue(itemURI,{4},ddl.options[ddl.selectedIndex].value);”,itemID,language,version,revision,fieldID,ddlist.ClientID));

因此,基本上我们只是为DropDownList添加一个客户端onchange处理程序,它调用这个Sitecore js函数。注意:我认为这需要Sitecore 6.2

不幸的是,这与我需要的正好相反。我想在编辑我的项目的Droplist字段时显示asp:DropDownList。这样,用户就可以从下拉列表中选择一个新值,就像在Content Editor中一样,而无需离开页面编辑器。谢谢。这可能就是我最后要做的。我只是有点恼火,因为创建内联编辑选项太难了。