0

我使用业务包树视图组件作为菜单。我的目标是只检索没有子类别的顶级菜单。子类别将仅在用户图标单击(+ / - 图标)或菜单项单击时显示。

所以基本上当我点击“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>

4

1 回答 1

1

不幸的是,目前没有解决方案。我们的待办事项中有此功能,并将在可能的情况下实施。

我们在 1.1.5-rc1 版本中实现了这个功能。该TreeView控件具有LoadChildren类型的新属性StaticCommandBindingExpression。这是一个关于如何使用它的例子。

视图模型.cs

[AllowStaticCommand]
public static IEnumerable<Item> LoadChildren(Item parent)
{
    return LoadYourChildrenFromSomewhere(parent.Id);
}

查看.dothtml

<bp:TreeView LoadChildren="{staticCommand: ViewModel.LoadChildren(_this)}" />

请注意,静态命令尚不支持 DI(即将推出)。您需要自己创建所需的服务或从全球服务提供商处解决它们。

于 2017-07-31T16:58:21.087 回答