具有自动建议的输入上的SelectedKey如何工作?

2020-09-12 21:04发布

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

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


我阅读了示例,但是它们不使用selectedKey属性。

背景:

我有一个表单,其中一个输入链接到包含100,000条记录的第二个表。

对于该输入,我选择使用自动建议。

 
    
      
      
          
              />
          
      
   

这对于新输入可以正常工作。 我将其链接到我的RSJ表。 当我单击"保存"时,帖子包含:

accountManager:" CC"//我的ID

accountManagerCOMBODESC:"克莱弗利"//我的名字

我认为:

accountManager-我的selectedKey是外部ID

accountManagerCOMBODESC是该行的描述。

但是对于现有记录,accountManager字段始终为空(如果我不更新该字段)

因此:我用:

加载表单

accountManager:"抄送",

accountManagerCOMBODESC:"克莱弗利"

我什么都没做,我只是单击更新,然后发回给我:

accountManager:"",

accountManagerCOMBODESC:"克莱弗利"

我的外国身份证已删除。 如何返回我的ID?

==>我希望值是键,并希望有一个文本标签供我设置输入文本。

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

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


我阅读了示例,但是它们不使用selectedKey属性。

背景:

我有一个表单,其中一个输入链接到包含100,000条记录的第二个表。

对于该输入,我选择使用自动建议。

 
    
      
      
          
              />
          
      
   

这对于新输入可以正常工作。 我将其链接到我的RSJ表。 当我单击"保存"时,帖子包含:

accountManager:" CC"//我的ID

accountManagerCOMBODESC:"克莱弗利"//我的名字

我认为:

accountManager-我的selectedKey是外部ID

accountManagerCOMBODESC是该行的描述。

但是对于现有记录,accountManager字段始终为空(如果我不更新该字段)

因此:我用:

加载表单

accountManager:"抄送",

accountManagerCOMBODESC:"克莱弗利"

我什么都没做,我只是单击更新,然后发回给我:

accountManager:"",

accountManagerCOMBODESC:"克莱弗利"

我的外国身份证已删除。 如何返回我的ID?

==>我希望值是键,并希望有一个文本标签供我设置输入文本。

付费偷看设置
发送
2条回答
1楼 · 2020-09-12 21:24.采纳回答

嗨,

获得了与框架相同的行为。 并且问题出在sap.m.Input组件中。 当绑定框架中的初始上下文一次更新绑定时。 值_onValueUpdated更新时,如果设置了selectedKey,则删除selectedKey。 同时,上下文更新显式设置特殊标志,而该标志只是被控件忽略。 我已经通过对控件的简单继承解决了该问题,而方法的改进却很少。

 sap.ui.define([
 " sap/m/输入"
 ],函数(输入){
 "使用严格";

 return Input.extend(" my.control.Input",{
 元数据:{},
 渲染器:{},
//绑定上下文更改时防止按框架更新模型
 _onValueUpdated:function(newValue){
 var oInfo = this.getBindingInfo('value');
 如果(oInfo && oInfo.skipModelUpdate){
 }其他{
 Input.prototype._onValueUpdated.apply(this,arguments);
 }
 }
 });
 });
 

这应该在不应该进行时通过控制关闭模型更新(如我所相信)。 这是在更改上下文时ManagedObject设置值的方式:

 oBindingInfo.skipModelUpdate = true;
 this [oPropertyInfo._sMutator](oValue);
 oBindingInfo.skipModelUpdate = false;
 

因此,在这种情况下,在绑定上下文更改期间更改值时无需清除selectedKey。

BR,

Denis

葫芦娃快救爷爷
2楼-- · 2020-09-12 21:30

谢谢,是的。

只是重复我刚才做的事情。.我使用上面的代码创建文件Input.js。 我将其放在目录resources/my/control中。 (当然,我没有将它称为my.controle,但是没关系。)在我的xml视图中,我在顶部添加:

xmlns:my =" my.control"

我改变了

 <输入应用程序:entityView =" RSJ"
             app:filterData =" key.regType = + 2; managerOf.name =:empty" id =" id ___ accountManager"
             placeholder ="输入...。"
             selectedKey =" {accountManager}"
             showSuggestion =" true"
             建议="建议"
             proposalionItems =" {路径:'/LISTRSJ'} type =" Text" value =" {accountManagerCOMBODESC}">     

 
 

 />

 

  

让我有一阵子的是,我需要将子标签proposalationItems更改为my:suggestionItems。 proposalionItems不是控件,而是属性。

现在,当我保存数据而不更新任何字段时,selectedKey字段将包含键。 在它变空之前,实际上是删除表中的所有外键。 谢谢-否则该表格将无法使用。

一周热门 更多>