这似乎确实是人们在使用sap.m.ListBase
相关控件时经常遇到的问题。让我概述一下如何管理事件(尤其是完全激活它们):
混淆可能与sap.m.ListMode
继承自的控件和继承自sap.m.ListBase
的sap.m.ListType
项目有关sap.m.ListItemBase
。
让我们假设以下示例列表:
<List
selectionChange=".onSelectionChange"
itemPress=".onItemPress"
delete=".onDelete"
>
<items>
<ObjectListItem
title="Hello ListItem"
press=".onObjectListItemPress"
/>
</items>
</List>
sap.m.ListMode (示例)
如果您使用sap.m.List
or sap.m.Table
,事件触发取决于mode
您使用的。mode
不幸的是,没有属性的列表/表格不会触发任何事件!如果您希望 List / Table 触发这些事件,则必须为其分配一个模式。例如:
<List
mode="SingleSelect"
...
>
这些是sap.m.ListMode
文档中的可能模式:
无(默认)
由于没有mode
分配任何属性,因此不会触发任何事件!
单选 | 单选左
列表控件mode="SingleSelect"
在每个项目的右侧显示一个onSelectionChange
单选按钮,并在用户单击给定单选按钮控件时立即触发事件。使用"SingleSelectLeft"
只是将单选按钮移动到项目的左侧。
单选大师
列表控件mode="SingleSelectMaster"
将在鼠标悬停时向您显示手,并onSelectionChange
在单击项目时触发。
多选
列表控件提供了一个复选框,并在每次选中和mode="MultiSelect"
取消选中项目时触发onSelectionChange
事件。
删除
使用列表mode="Delete"
为您提供了一个不错的删除按钮并触发onDelete
。
sap.m.ListType (示例)
还有一个你应该看看的type
属性:你的物品的属性。
每个项目都继承自sap.m.ListItemBase
并因此具有一个名为 的属性type
。让我们看看它的样子:
<items>
<ObjectListItem
type="Active"
press=".onObjectListItemPress"
detailPress=".onDetailPress"
...
/>
</items>
sap.m.ListMode
文档中列出了这些类型:
积极的
根据mode
,itemPress
列表和 press
列表项的 可以被触发。选定的项目会突出显示,以便用户可以看到选定的内容。
细节
sap-icon://edit
提供了一个触发detailPress
事件的详细信息按钮(带有图标)。
DetailAndActive
顾名思义,这是 Detail 和 Active 类型的组合。因此,您可以在detailPress
单击按钮时触发详细信息按钮,并且该项目本身会触发列表事件itemPress
。
导航
这些项目具有类似导航的外观,itemPress
并且项目press
被调用。
不活跃
不会从项目本身调用任何项目事件。
现在让我们来看看你的问题。您应该分配您的表格控件 amode
或分配您的项目 a type
。在那之后,事件应该被触发。
一般来说,我会避免同时使用 aListMode
和 a ListType
,因为可能会出现意外行为,但请自行检查。