【发布时间】:2011-08-08 10:55:26
【问题描述】:
我根据数据定义手册中的内容创建了一些简单的命令,其中用户交互是右键单击一个项目 -> 插入 -> MyCommand,然后是一个简单的对话框,说“你真的想这样做吗? ”。那太棒了。
现在我想要一个命令,允许我在对话框中与用户进行更多交互。我需要添加几个单选按钮列表,以便用户可以选择选项,然后选择一个按钮来运行命令。我想我需要为此使用 ShowControlPopup。我创建了一个控件 (ascx) 来定义弹出窗口的外观(并发布了一个测试版本以查看它是否可以作为 Sitecore 中的基本控件)。但是,我不确定 ShowControlPopup 的参数到底是什么。
第一个参数称为“Id” - 我在这里输入什么 ID?使用popup控件的item的id?
第二个参数叫做“where”——我猜这是弹出窗口的 URL。内容项是否需要存在于此处,还是只是一个虚拟 URL?
第三个参数叫做“controlId”——我在这里放什么id?我已经尝试了定义弹出窗口的控件的 ID,但我收到一条错误消息,提示找不到控件。
当用户在对话框中选择了他们的选项并单击“确定”时,什么会处理该事件?弹出控件的命令类的 Run 方法或代码隐藏中的事件处理程序?
到目前为止,这是我的代码。如果在尝试创建控件时失败,并出现关于无法找到具有提供的 id 的项目的错误。我刚刚猜测了弹出控件想要了解的项目。
protected void Run(Sitecore.Web.UI.Sheer.ClientPipelineArgs args)
{
if (args.IsPostBack)
{
if (args.HasResult)
{ // normally code here would run when the dialog box is completed by the user. Is that so in this case?
}
}
else
{
Sitecore.Context.ClientPage.ClientResponse.ShowControlPopup("F3684C4C-D9EF-4796-A471-5B05553119B6",
"http://mysite/dummy.aspx",
"B8D503D0-AEBE-43AE-B924-C3849F03E90D");
args.WaitForPostBack();
}
}
干杯,
詹姆斯。
Sitecore 6.2 rev 091012 / Win7 32bit / IIS7 / SQLExpress 2008(仅限本地开发)
【问题讨论】:
-
Sheer UI 完全没有文档记录……我曾多次向 Sitecore 抱怨过这件事,但我还没有看到任何更新。如果您还没有这样做,我建议您为此提出支持请求。
-
我发现实现 Sheer 组件的最简单方法是找到一个与您想要的内容接近的现有对话框,然后使用反射器复制并修改为您需要的内容。例如,在您的物理文件中搜索“设置发布”以找到发布限制对话框。打开 XML 文件并查找“Codebeside”类。然后是从功能区中挖掘命令并复制调用方式的问题。
-
感谢 Bryan 和 dmgdotnet。我已经使用 Sitecore 开立了一个支持案例。我会发布他们提供的任何有用的答案。我会看一下 Sitecore 代码,但我不确定我现在是否有时间。我可能会创建一些不同的命令来处理可能出现的不同场景。