我很难在Sitecore 7中构建过滤系统。
我在页面的同一层上有2个子布局。
子布局A是一个侧边栏,其中包含复选框列表,并具有一个事件,该事件使用选定的值填充列表。子布局B显示一组项目。
我想做的是将填充的列表从子布局A发送到子布局B,以便根据用户选择的内容过滤项目列表。我能够通过将数据传递给Session来做到这一点,但这不是处理该数据的最佳方法。
我尝试为子布局A定义一个属性并将其加载到该列表中,但是我无法从子布局B中获得子布局A的确切实例以读取填充的属性。另外,尝试Page.FindControl(“ IdOfSomeElementFromSublayoutA”)在子布局B中始终返回null。即使我已将Page转换为包含两个子布局的.aspx页面。
我正在使用Sitecore 7 Update 2。
非常感谢您的宝贵时间。
最好的方法是使用Sitecore.Events.Event
该类引发(和订阅)事件。您的侧边栏子布局会在按钮的click事件处理程序中使用类似以下内容的事件引发事件:
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方法被多次调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句