我在SAPUI5中创建了一张表格,其中数据是从后端SAP Gateway获取的。我在表格中添加了一个包含链接的列,每一行都有一个链接。如果我点击该链接,则会打开一个弹出框。
我想要在弹出框中传递同一行其他列的详细信息,但是我需要了解所选行的索引才能获取详细信息,而我不知道如何获取索引。
如何实现?
我在SAPUI5中创建了一张表格,其中数据是从后端SAP Gateway获取的。我在表格中添加了一个包含链接的列,每一行都有一个链接。如果我点击该链接,则会打开一个弹出框。
我想要在弹出框中传递同一行其他列的详细信息,但是我需要了解所选行的索引才能获取详细信息,而我不知道如何获取索引。
如何实现?
getSource()
和getParent()
方法来向上遍历控件层次结构,如下所示:function linkPressListener(oEv) {
// get event source -> the link
var link = oEv.getSource();
// walk up the control hierarchy until you reach the table row (1st parent should be column, 2nd the row)
var row = link.getParent().getParent();
// get the rows index
var index = row.getIndex();
// get row context from the table
var myTable = sap.ui.getCore().byId("myTablesID");
myTable.getContextByIndex(index);
// open your dialog using the rows context
...
}
无论如何,根据这样的等级制度似乎有点脆弱,我希望能看到更优雅的示例。
var model = that.getView().getModel("ModelName");
var path = evt.getSource().getParent().getBindingContextPath();
var data = model.getProperty(path);
data应该包含绑定到行的对象,包含您需要的所有值。我有一个与Table不同的问题,涉及到RowRepeater控件。请参考Jasper_07在https://dev59.com/QHzaa4cB1Zd3GeqPMi59#21600210提供的答案。
这将让您访问当前绑定上下文属性或整个对象。
希望这可以帮助您!