此页面显示如何开始使用Wijmo的TreeView控件。
使用TreeView控件就像使用任何Wijmo控件:
下面的示例演示了这一切。
要创建树,通常必须设置三个属性:
还有用于将节点图像,复选框和折叠状态绑定到itemsSource数组的属性。
默认情况下,TreeView在加载树时会展开每个级别的第一个节点。 您可以使用collapsedMemberPath 属性自定义该行为,以控制每个节点的折叠状态,或在加载树后调用 collapseToLevel方法以折叠比所需级别更深的所有节点 以显示。
加载树后,您可以使用鼠标或键盘选择,折叠或展开节点。 您还可以使用键盘搜索节点。
默认情况下,TreeView控件使用动画来展开和折叠节点。 您可以通过将isAnimated属性设置为false来关闭此功能。
它还会在节点扩展时自动折叠同级节点。 您可以通过将autoCollapse属性设置为false来关闭此功能。
默认情况下,当用户单击节点上的任意位置时,TreeView控件会展开折叠的节点。 您可以通过将 expandOnClick属性设置为false来更改此设置,在这种情况下,只有在折叠/展开的字形上的点击才会影响折叠状态。
您可以使用CSS自定义TreeView的外观。
此示例更改折叠/展开图标,根据节点级别使用不同的字体大小,并在一级节点的左侧添加垂直条。
使用TreeView下面的复选框切换自定义样式并查看区别。
TreeView控件最简单和最常见的用法是导航。TreeView的层次结构和自动搜索功能使用户可以轻松向下钻取并找到他们感兴趣的项目。
您可以使用selectedItemChanged或itemClicked事件进行导航。区别在于,当用户使用键盘移动选择时,会发生selectedItemChanged当用户单击项目或按Enter键时,会发生itemClicked
这个演示使用itemClicked事件:
手风琴是多窗格面板,每次只保留一个面板。它们通常用于导航。
您可以使用TreeView控件来实现手风琴折叠。
使用CSS自定义标题显示并隐藏折叠/展开字形,并确保autoCollapse 属性设置为true(默认值),因此非活动面板会自动折叠。
将showCheckboxes属性设置为true,TreeView将向每个节点添加复选框。
当显示复选框时,TreeView管理其层次结构,以便当复选框被选中或清除时,新值将自动应用于所有子节点,并反映在父节点的状态。
当选中或取消选中项目时,会引发checkedItemsChanged 事件,并且将使用当前选中的项目列表更新checkedItems属性。
使用imageMemberPath 属性可通过在包含图像URL的数据项上指定属性的名称来将图像添加到节点。
例如,我们的一些示例items数组有一个“img”属性设置为图片网址:
您可以使用TreeNode的isDisabled属性禁用节点。 无法使用鼠标或键盘选择已禁用的节点。
您可以使用formatItem事件自定义TreeView节点的内容。 事件处理程序参数包括表示节点和要呈现的数据项的元素。
下面的示例使用formatItem事件在树上新项目的右侧添加“新”徽章。
延迟加载在处理大型分层数据源时很有用,并且希望避免在同时加载整个数据集时的延迟。
TreeView控件使得延迟加载超级容易。只需要两个步骤:
下面的示例中的树以三个延迟加载节点开始。 展开它们时,将调用lazyLoadFunction。 该函数使用setTimeout来模拟http延迟并返回三个子节点的数据,其中一个子节点也是一个延迟加载节点。
该示例还使用一些CSS在节点图标加载时为其添加动画。
此示例显示如何使用TreeView控件来显示来自OData源的分层数据。
示例通过加载Northwind employees表开始。加载数据时,代码会为每个员工添加一个“Orders”空数组。lazyLoadFunction用于在展开员工节点时装入订单。
订单表还为每个订单添加了一个“Order_Details”空数组。lazyLoadFunction用于在订单节点展开时加载订单详细信息。
将allowDragging属性设置为true,以允许用户将节点拖动到TreeView中的新位置。
当允许拖动时,用户可以将任何节点拖动到树中的任何位置。 您可以通过处理TreeView拖放事件来自定义此行为:
下面的示例显示如何在TreeView控件上提供标准和自定义的拖放操作:
将allowDragging属性设置为true允许用户拖放节点在同一TreeView中。
要允许在不同TreeView控件之间拖放节点,必须处理dragOver事件,如果移动有效,请将cancel参数设置为false。
在下面的示例中,用户可以在两个树之间和之间拖动节点:
TreeView控件提供编辑支持。将isReadOnly属性设置为false,用户将能够通过按F2键编辑节点的内容。
使用displayMemberPath属性指定的属性,对节点内容所做的编辑会自动应用于itemsSource 数组中的项目。
您可以使用以下事件自定义编辑行为: nodeEditStarting,nodeEditStarted, nodeEditEnding,和nodeEditEnded。
在下面的示例中,我们仅对不包含子节点的节点启用编辑。 要编辑,请选择一个节点,然后按F2:
一些语言从页面的右侧向左侧呈现内容(阿拉伯语和希伯来语是典型的例子)。HTML使用'dir'属性。在任何元素上将'dir'设置为'rtl'会导致元素的内容从右到左流动。
TreeView自动支持。 如果托管树的元素的“dir”属性设置为“rtl”,则树将呈现节点从右向左延伸。 您不必在控件上设置任何属性。
请注意,'dir'属性值是继承的,因此如果您在body标签上设置它,整个页面将从右到左进行渲染,包括树。
还要注意,CSS有一个'direction'属性,执行与'dir'元素属性相同的功能。 'dir'属性通常被认为更适合于几个原因,包括它可以在CSS规则中使用的事实。
My parent element has a dir="rtl" attribute!