如何在SAPUI5中获取表格行的详细信息而不实际选择该行

3

我在SAPUI5中创建了一张表格,其中数据是从后端SAP Gateway获取的。我在表格中添加了一个包含链接的列,每一行都有一个链接。如果我点击该链接,则会打开一个弹出框。

我想要在弹出框中传递同一行其他列的详细信息,但是我需要了解所选行的索引才能获取详细信息,而我不知道如何获取索引。

如何实现?


我尝试过,但只能获取单列的详细信息。我无法获取行索引。 - Ash
请添加您正在尝试的SAPUI5代码,这样会更容易帮助您。 - dparnas
2
尝试使用此页面构建示例:http://jsbin.com/openui5-HTML-templates/77/edit - Manuel Richarz
2
你是否正在使用数据绑定来填充表格中的数据?如果是这样,你可以使用CustomData属性为你的链接提供额外的信息,并在按下事件中访问它。你可以将整个行对象存储在其中,并将其提供给弹出窗口。请参阅文档以获取示例:https://openui5.hana.ondemand.com/#docs/guide/CustomData.html - Tim Gerlach
1
@TimGerlach,行对象不是this.getContext().getObject()吗?为什么不将上下文设置为弹出窗口呢? - Jasper_07
@Jasper_07:当然没问题!对我来说这听起来更好,因为传递行对象的Context将允许通过PopUp对话框访问和操作模型中的对象。只需确保传递整个行对象的上下文,而不是仅传递Link上下文。 - Tim Gerlach
3个回答

2
您可以使用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
   ...
}

无论如何,根据这样的等级制度似乎有点脆弱,我希望能看到更优雅的示例。


1
你是想获取索引值吗?sap.ui.getCore().byId("myTablesID").indexOfRow(this.getParent()) 或者行上下文=this.getBindingContext(),无论哪种方式看起来都像是走了一条风景线。 - Jasper_07
FYI,this.getParent().getParent() === oTable,而不是row。 - Jasper_07

1
获取绑定到表格的模型 var model = that.getView().getModel("ModelName"); var path = evt.getSource().getParent().getBindingContextPath(); var data = model.getProperty(path); data应该包含绑定到行的对象,包含您需要的所有值。

1

我有一个与Table不同的问题,涉及到RowRepeater控件。请参考Jasper_07在https://dev59.com/QHzaa4cB1Zd3GeqPMi59#21600210提供的答案。

这将让您访问当前绑定上下文属性或整个对象。

希望这可以帮助您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接