我使用business pack treeview组件进行菜单。我的目标是只检索没有子类别的顶级菜单。子类别仅显示用户图标单击(+ / - 图标)或菜单项单击。
所以基本上当我点击" a"或者绑定到此菜单对象的图标,我想向我的服务器发送请求以获取他的子类别等等。我不希望在一个请求中得到所有内容。
我注意到有两个点击处理程序。
1)使用Changed
属性 - 当我使用此属性处理点击事件时,我成功地将正确的对象导入我的CategorySelectedList
,但它只直接在文本标签上注册点击。对于图标,它不再起作用,类别菜单也不会扩展。
2)使用Events.Click
属性 - 当我使用此属性处理点击事件时。我甚至没有在我的CategorySelectedList
属性中获得正确的对象,但在这种情况下类别菜单会扩展。
我无法将视图ID从我的视图发送到SetActiveMenuNode
方法,所以我必须直接从我的CategorySelectedList
中获取它,但每个方法都有自己的问题。
有没有解决方案?
模型视图
public List<CategoryListDTO> AdminMenuList { get; set; } = new List<CategoryListDTO>();
public List<CategoryListDTO> AdminMenuSelectedList { get; set; } = new List<CategoryListDTO>();
public void SetActiveMenuNode()
{
var selected = AdminMenuSelectedList.FirstOrDefault();
}
//načítání podkategorií
public StaticCommandBindingExpression LoadChildren { get; set; } = new StaticCommandBindingExpression(new CompiledBindingExpression( //something here));
我的观点
<dot:Content ContentPlaceHolderID="MainContent">
<section class="content">
<bp:TreeView DataSource="{value: AdminMenuList}"
SelectedValues="{value: AdminMenuSelectedList}"
ItemKeyBinding="{value: Id}"
ItemHasChildrenBinding="{value: HasCategories}"
ItemChildrenBinding="{value: AssignedToCategory}"
LoadChildren="{staticCommand: _parent.MyMethod()}"
Changed="{command: SetActiveMenuNode()}"
>
<p>{{value: Name}}</p>
</bp:TreeView>
</section>
答案 0 :(得分:1)
不幸的是现在没有解决方案。我们在积压工作中有这个功能,并会在可能的情况下实施。
我们已在1.1.5-rc1版本中实现此功能。 TreeView
控件具有LoadChildren
类型的新属性StaticCommandBindingExpression
。以下是如何使用它的示例。
<强> ViewModel.cs 强>
[AllowStaticCommand]
public static IEnumerable<Item> LoadChildren(Item parent)
{
return LoadYourChildrenFromSomewhere(parent.Id);
}
<强> View.dothtml 强>
<bp:TreeView LoadChildren="{staticCommand: ViewModel.LoadChildren(_this)}" />
请注意,静态命令(coming)尚不支持DI。您需要自己创建所需的服务或从全球服务提供商处解决它们。