SAPUI5:如何检索特定表行的绑定数据

2020-08-22 17:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我在UI5主题上还很新,即使在搜索了很多资源之后,我也没有找到合适的答案,希望您能给我一些提示。

我现在所拥有的:在我的应用程序的UI上,我有一个表,负责任的控制器为其动态创建列。 在负责任的控制器中,表已绑定到JSON模型

 this._oViewModel = new JSONModel();
 this.setModel(this._oViewModel," viewModel");
 this._oTableModel = new JSONModel();
 var oTable = this.byId(" table");
 oTable.setModel(this._oTableModel);
 

然后我为该表动态创建列(标签,绑定等)并将其添加为

 oTable.addColumn(oColumn); 

它工作得很好,从后端获取的数据在表控制器中正确显示。 到目前为止,一切都很好。 现在,我有以下要求。 根据同一行中另一单元格的值,应隐藏一列内容。 因此,在一行中它可能是可见的,而在另一行中则不可见。 在我的列定义中,我绑定了一个能见度属性的函数,因此每次浏览器呈现该表并将新行添加到表时,框架都会调用此函数(或者您只需滚动)。 对于我的专栏,我创建一个像这样的模板:

 oTemplate = new CheckBox({
    已选择:{路径:" form/isRelevant"},
    可见:{path:"",格式化程序:jQuery.proxy(this._formatCellConcentVisible,this)},
    editable:false});  

然后将模板添加到相应的新列中,并将其添加到oTable中。 现在,我有了一个函数_formatCellConcentVisible,可以在其中影响表格单元格内容的可见性,因为它是为每个表格行调用的。 每次在表中滚动并必须呈现新行时,此函数都会自动调用。

但是在这里,我不确定如何访问我检查的单元格的值。 我想根据同一表行中的单元格值更改bVisible值。 该表已绑定到JSON模型,但我没有从该模型中获取该行对应单元格的数据所需的调用序列。 在_formatCellConcentVisible中,我现在有以下不完整的代码:

 var bVisible = true;

//根据其他单元格值更改可见性的逻辑
 var oTable = this.byId(" table");
 var aRows = oTable.getRows();
//检查最后一行,因为它是一个接一个地追加的

 var indexOfLastRow = aRows.length-1;
 var aCells = aRows [indexOfLastRow] .getCells();

//应在此处添加用于获取绑定数据的逻辑

 返回bVisible; 

现在我有了最近附加行的所有单元格数组。 但是它没有getValue()函数。 此复选框绑定到模型中的" form/isRelevant"路径(如上面我的模板定义所示)。 我通过调用不同的getBinding方法进行操作,但是没有成功。 最有可能的是,我不必弄乱单元格,只需将内容放在行后即可。 如何从JSON模型访问绑定到aRows []中特定行条目的数据?

非常感谢

Akos

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我在UI5主题上还很新,即使在搜索了很多资源之后,我也没有找到合适的答案,希望您能给我一些提示。

我现在所拥有的:在我的应用程序的UI上,我有一个表,负责任的控制器为其动态创建列。 在负责任的控制器中,表已绑定到JSON模型

 this._oViewModel = new JSONModel();
 this.setModel(this._oViewModel," viewModel");
 this._oTableModel = new JSONModel();
 var oTable = this.byId(" table");
 oTable.setModel(this._oTableModel);
 

然后我为该表动态创建列(标签,绑定等)并将其添加为

 oTable.addColumn(oColumn); 

它工作得很好,从后端获取的数据在表控制器中正确显示。 到目前为止,一切都很好。 现在,我有以下要求。 根据同一行中另一单元格的值,应隐藏一列内容。 因此,在一行中它可能是可见的,而在另一行中则不可见。 在我的列定义中,我绑定了一个能见度属性的函数,因此每次浏览器呈现该表并将新行添加到表时,框架都会调用此函数(或者您只需滚动)。 对于我的专栏,我创建一个像这样的模板:

 oTemplate = new CheckBox({
    已选择:{路径:" form/isRelevant"},
    可见:{path:"",格式化程序:jQuery.proxy(this._formatCellConcentVisible,this)},
    editable:false});  

然后将模板添加到相应的新列中,并将其添加到oTable中。 现在,我有了一个函数_formatCellConcentVisible,可以在其中影响表格单元格内容的可见性,因为它是为每个表格行调用的。 每次在表中滚动并必须呈现新行时,此函数都会自动调用。

但是在这里,我不确定如何访问我检查的单元格的值。 我想根据同一表行中的单元格值更改bVisible值。 该表已绑定到JSON模型,但我没有从该模型中获取该行对应单元格的数据所需的调用序列。 在_formatCellConcentVisible中,我现在有以下不完整的代码:

 var bVisible = true;

//根据其他单元格值更改可见性的逻辑
 var oTable = this.byId(" table");
 var aRows = oTable.getRows();
//检查最后一行,因为它是一个接一个地追加的

 var indexOfLastRow = aRows.length-1;
 var aCells = aRows [indexOfLastRow] .getCells();

//应在此处添加用于获取绑定数据的逻辑

 返回bVisible; 

现在我有了最近附加行的所有单元格数组。 但是它没有getValue()函数。 此复选框绑定到模型中的" form/isRelevant"路径(如上面我的模板定义所示)。 我通过调用不同的getBinding方法进行操作,但是没有成功。 最有可能的是,我不必弄乱单元格,只需将内容放在行后即可。 如何从JSON模型访问绑定到aRows []中特定行条目的数据?

非常感谢

Akos

付费偷看设置
发送
1条回答
昵称总是被占用
1楼-- · 2020-08-22 17:31

嗨,您可以将行中的其他字段传递给格式化的字段。 检查此教程以了解如何执行此操作: https://ui5.sap.com/#/entity/sap.m.tutorial.walkthrough/sample/sap.m.tutorial.walkthrough.23/code/webapp%2Fmodel%2Fformatter .js


kr,Wouter

一周热门 更多>