我很难在 Sitecore 7 中构建过滤系统。
我有 2 个子布局,位于页面的同一级别。
子布局 A 是一个侧边栏,其中包含复选框列表,并具有一个用所选值填充列表的事件。
子布局 B 显示一组项目。
我想做的是将填充的列表从子布局 A 发送到子布局 B,以便根据用户选择的内容过滤项目列表。
我能够通过会话传递数据来做到这一点,但这不是处理该数据的最佳方式。
我尝试为子布局 A 定义一个属性并加载列表,但我无法从子布局 B 获取子布局 A 的确切实例,以便读取填充的属性。
另外,尝试 Page.FindControl("IdOfSomeElementFromSublayoutA") 在子布局 B 中始终返回 null。即使我已将 Page 转换为包含两个子布局的 .aspx 页面。
我正在使用 Sitecore 7 更新 2。
非常感谢您抽出时间。
做到这一点的最佳方法是使用Sitecore.Events.Event
班级。您的侧边栏子布局将在按钮的单击事件处理程序中使用类似以下内容的事件来引发事件:
Sitecore.Events.Event.RaiseEvent("YourEventName", new YourEventArgsClass { Property = "SomeValue" });
那么在另一个子布局中,您需要进行以下设置才能处理该事件:
public partial class YourOtherSublayout : System.Web.UI.UserControl
{
private System.EventHandler eventHandlerRef;
protected void Page_Load(object sender, EventArgs e)
{
eventHandlerRef = EventHandlerMethod;
Sitecore.Events.Event.Subscribe("YourEventName", eventHandlerRef);
}
protected void Page_Unload(object sender, EventArgs e)
{
if (eventHandlerRef != null)
{
Sitecore.Events.Event.Unsubscribe("YourEventName", eventHandlerRef);
}
}
private void EventHandlerMethod(object sender, EventArgs e)
{
if (e != null)
{
//do stuff here
}
}
}
注意:保留 Page_Unload 代码非常重要,否则您将看到 EventHandler 方法被多次调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)