【问题标题】:Loading subcategories in TreeView on click Dotvvm单击 Dotvvm 在 TreeView 中加载子类别
【发布时间】:2018-01-07 04:30:41
【问题描述】:

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

所以基本上当我点击“a”或绑定到这个菜单对象的图标时,我想向我的服务器发送请求以获取他的子类别等等。我不想在一个请求中获得所有内容。

我注意到视图中有两个点击处理程序。

1) 使用Changedproperty - 当我使用此属性处理点击事件时,我成功地将正确的对象放入我的CategorySelectedList,但它只直接在文本标签上注册点击。对于图标,它不再起作用,类别菜单也不会展开。

2) 使用Events.Clickproperty - 当我使用这个属性来处理点击事件时。我什至没有将正确的对象放入我的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>

【问题讨论】:

    标签: dotvvm


    【解决方案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)}" />
    

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

    【讨论】:

    • 我有一个好消息要告诉你。此功能将在下一个测试版中提供。
    • 感谢您的信息。下一个测试版应该什么时候发布?
    • 我们已经发布了包含此功能的 1.1.5-rc1 版本。
    • 感谢您的信息,将尽快尝试。支持并接受答案
    • 看看LoadChildren 命令。它接受扩展项作为参数,并应返回它的子项/后代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2019-07-01
    • 2020-09-06
    • 2018-09-13
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多