noobie_sapui5_developer
我正在尝试使用复选框选择sap.ui.table的单行。
此表有2种模式
在多选模式下,每行都有一个复选框,可以选择多行-但我只希望选择一行
在单选模式下,它仅允许选择一行-但没有复选框。
如何用一张只有一个可选行的复选框来实现一张表?
sap.m.table是可能的,但我的要求是使其与sap.ui.table一起使用。
答案 0 :(得分:1)
只要更改了选择,就可以使用rowSelectionChange事件,您可以取消选择其他行并保留选定的行。
希望这会有所帮助
答案 1 :(得分:1)
为什么我不建议您这样做:
复选框(selectionMode="MultiToggle"
)通常用于向用户发出信号,表明他能够选择不行,一个或多个选项,而单选按钮(selectionMode="Single"
)则告诉用户他只能选择一个选项。
请参见: material.io,nngroup,uxplanet-radio,uxplanet-checkbox
对于您而言,建议您使用selectionMode="Single"
并将selectionBehavior
属性设置为Row
,RowOnly
或RowSelector
({{3 }}。
正如@jasbir所指出的,您可以可以使用SelectionBehaviour事件来调用一个函数,该函数获取刚刚选择的行的索引(rowSelectionChange) 。然后,您可以在setSelectedIndex
上调用sap.ui.table.Table
函数,并将获取的索引传递给它。这将删除以前选择的行,并将当前选择的行设置为选中状态。
<Table id="yourTableId"
selectionMode="MultiToggle"
rowSelectionChange="onSelectionChange">
</Table>
在控制器中。
onSelectionChange: function(oEvent) {
var oYourTable = this.getView().byId("yourTableId"),
iSelectedIndex = oEvent.getSource().getSelectedIndex();
oYourTable.setSelectedIndex(iSelectedIndex);
}
注意:由于
setSelectedIndex
函数触发了rowSelectionChange
,因此上述函数被触发了两次(另一个表明该解决方案不是预期的行为)。
查看getSelectedIndex的SAP Fiori准则以获取更多信息。