Sap.ui.Table->初始绑定后更改操作模式

2020-09-02 17:17发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好! 我在XML视图中定义...

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

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


大家好!

我在XML视图中定义了表

 <表
        id =" tableHu"
        selectionMode =" MultiToggle"
        visibleRowCount =" 12"
        enableSelectAll =" false"
        enableBusyIndi​​cator =" true">
 

然后在相应的控制器中,在" AfterRendering"事件中,我进行了绑定,并传递了一些过滤器

 onAfterRendering:function(){
   var oTable = this.getView()。byId(" tableHu");
    var oFilters = [new sap.ui.model.Filter(" Matnr"," EQ"," Test")]];
   
   oTable.bindRows({
     路径:" huData>/ZodataHuListSet",
     过滤器:oFilters,
     参数:{
        operationMode:sap.ui.model.odata.OperationMode.Auto
     }
   });
   var oDataModel = oTable.getModel(" huData");

   },
 

现在,问题是:如果我保持OperationMode = Auto(或Server),则每次执行过滤器时,我都会调用Sap系统,并希望避免使用它,因为在我的场景中,我有大量数据,并且 在我看来,在客户端上工作更正确(我仍在猜测为什么SAP建议相反,并且任何解释都将受到赞赏,因为它与经典ABAP开发的相反)。

请求

在绑定行之后,有一种方法可以将OperationMode更改为Client? 如果我将更改放在行后

 var oDataModel = oTable.getModel(" huData");
 

过滤器未通过IT_FILTER_SELECT_OPTIONS表传递给SAP

当我第一次加载数据以减少行数,然后在客户端上操作其他过滤器/排序器时,我希望通过过滤器。

付费偷看设置
发送
9条回答
1楼 · 2020-09-02 17:59.采纳回答

西蒙妮,你好

在通过过滤器和操作模式的表行绑定代码之后,您可以尝试执行以下操作吗?

 var oTable = this.getView()。byId(" oTable"); //获取表控件
 var oRowsBinding = oTable.getBinding(" rows"); //行绑定
 oRowsBinding.attachDataReceived(function(oEvent){//从后端服务器接收数据时命中
      var oSource = oEvent.getSource();
      oSource.bClientOperation = true; //将Client Operation设置为true
      oSource.sOperationMode ="客户端"; //设置操作模式为Client
 });
 

此外,我希望您使用的是v2 OData模型,因为普通的OData模型不支持操作模式:实例化OData模型

以下是示例:柱塞

此致

Sai。

CPLASF-自律
2楼-- · 2020-09-02 17:50

Hi Sai,

oSource.bClientOperation在sapui5 1.60版本中不可用。

请对此发表评论。

此致

venkatesh。

宇峰Kouji
3楼-- · 2020-09-02 17:57

嗨西蒙妮,

为什么不能为此使用CountMode,它将决定何时将客户端和服务器用于自动操作模式,我认为 这将解决您的问题,您无需将操作模式更改为客户端。

有关CountMode的更多信息,请参见: JsDoc报告-用于HTML5的SAP UI开发工具包-API参考-sap.ui.model.odata.OperationMode

感谢

Viplove

# p#

嗨Viplove,

是的,我看到了,但是我很懒,我不想在OData端实施过滤器管理????

能不能别闹
4楼-- · 2020-09-02 18:00

您好simone,

您正在尝试在客户端执行过滤。

如何根据选择的值或其他内容进行过滤。

以下代码帮助我进行了过滤技术:

var oFilters = null; //定义过滤器

var oSelectedKey = sap.ui.getCore()。byId(" cmb1")。getSelectedItem()。getKey(); //我正在获取选定的关键项目值

if(!(oSelectedKey ==" *"))

var oFilters = [new sap.ui.model.Filter(" CompanyId"," EQ",oSelectedKey)]; //在这里,我要定义过滤器值并执行过滤器技术。

sap.ui.getCore()。byId(" Countries")。bindItems("/img/Employees",sap.ui.getCore()。byId(" first_template"),null,oFilters); //这里是在过滤之后将值绑定到表上。

我不确定这是否对您有帮助.........!

谢谢

Deepak Raj。

微wx笑
5楼-- · 2020-09-02 17:52

如果我设置了客户端,则所有过滤均由UI5进行管理,而无需我编写任何一行代码。

我尝试解释一个 更好地解决了我的问题:

在我的模型的首次加载(或刷新)时,我希望能够通过过滤器以减少传输到UI5应用的数据量。

完成后,我想通过客户端对提取的数据执行过滤器

当学会了学习
6楼-- · 2020-09-02 17:43

Simone,

您可以尝试这样吗? 柱塞

此致

Sai Vellanki。

落灬小鱼
7楼-- · 2020-09-02 17:50

错误...仍然有3个调用,并且第3个(更改操作模式)清除了我的表输出并显示"无数据",即使在响应中我得到了249行

一周热门 更多>