点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们需要能够为报告中的每个项目编...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们需要能够为报告中的每个项目编...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们需要能够为报告中的每个项目编辑一些字段,而不必导航到详细信息页面来执行此操作。 我假设如果ODataModel为TwoWay且ui.table.Table已配置为可编辑,则当按下"编辑"按钮时,基于meta.xml中的sap:updatable属性,这些字段将变为可编辑控件。
问题:
-我们没有在表格顶部获得"编辑"按钮。
-如果我在控制器中将ui.table设置为"可编辑",那么所有字段都将变为可编辑状态,而不仅仅是 具有相应可更新属性的广告。
如果有人可以指出正确的方向以使"编辑"模式进入列表报告,我将不胜感激。
SAPui5 V1.38.5
设置表进行编辑会导致所有字段变为可编辑状态,而不仅仅是具有配置的字段 : sap:updatable =" true"
,并且没有"编辑","保存"或"取消"按钮。 在UI适应编辑器中使用"编辑可切换"属性在ListReport中无效。
我手动执行此操作,这是我解决此问题的方法:
已为EntitySet和EntitySet中的各种属性配置了可更新属性。
"编辑"按钮仅在详细信息页面上可用,但我们不希望在详细信息页面上显示"编辑"按钮,因此我在清单中为ObjectPage创建了Controller扩展:
并在控制器内部,从界面中删除了编辑控件:
我通过在清单中包括"动作"以及"保存"和"取消"按钮,将"编辑"按钮添加到了ListReport:
根据文档,将这些操作之一设置为" determining":true应该将控件呈现在应用程序的页脚中,但是在此版本(1.38.5)中并未发生。 保存和取消按钮与编辑按钮一起保留在标题上。
要解决此问题,我必须根据应用程序的状态隐藏/显示这些按钮。
现在我必须实现编辑功能,当用户按下"编辑"按钮时,应用程序进入编辑状态。
为确保编辑后的项目不会从屏幕上消失,我禁用了FilterBar中的所有过滤器以及"转到"按钮。
隐藏"编辑"按钮,并显示"保存"和"取消"按钮。 我清除了消息并显示了一个消息弹出按钮,以便用户将获得有关编辑的一些反馈。
然后我为字段/列构建了一组模板。 这是有趣的部分,使用服务元数据,我检查了EntitySet的所有属性以发现所有可更新的字段:
根据字段的数据类型,我创建了一个合适的控件,该控件将被设置为表中列的模板。
现在,我们的用户希望当输入具有焦点时,每个控件中的所有文本都会被选中/突出显示,并且我们对某些字段还有一些其他要求:最小值,日期和数字验证,并且有一个可读取的文本。 价格值更新时必须更新的-only字段。 因此,在创建模板来处理这些要求时,我在控件中添加了一些事件处理程序。
ui.table.Table与m.Table不同,它没有非常有用的setKeyboardMode()方法,因此我不得不向这些控件添加键侦听器并处理Tab,Shift + Tab,向上和向下箭头 键来管理从一个输入到下一个输入的导航。
我通过检查表的行和单元格来管理此导航,将重点放在下一个/上一个可编辑控件上。
更新更改时,ODataModel出现了一些问题:使用批处理时,对一项进行编辑失败,批处理中的所有更新均失败,因此必须逐项更新每个项。 submitChanges()文档中提到:" 重要提示:仅在启用批处理支持的情况下,才会调用成功/错误处理程序。" 因此,当不使用批处理更新单个编辑内容时,我没有收到响应 成功/错误,并且无法处理消息,我尝试了attachBatchRequestSent并在oParameter中为commitChanges和update调用设置了成功/错误回调。
因此,我手动进行了此操作...我将每个编辑记录在一个数组中。 存储sPath,propertyName,新值和旧值以及数据类型。 当对一个字段进行多次编辑时,我只是更新了新值,如果某个值与原始值相同,则删除了edits数组中该字段的条目。
当用户单击"保存"按钮时,我使用此数组发送更新。 我创建一个新的ODataModel并将其设置为使用批处理。 然后,对于编辑列表中的每个项目,我调用了update()方法,并且能够处理单个项目的成功/错误结果。
如果用户按"取消",我将使用存储在编辑列表中的sPath并使用主模型的resetChanges()方法来重置更改。 确保只读字段的值正确重置。
大量修改。
我在对话框中处理了批量编辑。 因此,我创建了一个新片段" MassEditDialog"以用作我的对话框。
我写了两个自定义控件,一个RadioButton扩展,旁边有一个输入控件(Number,Text,ComboBox或DatePicker)而不是标签,还有一个RadioButtonGroup,用于保存这些自定义RadioButton。
然后我创建了另一个片段" FieldEditor",其中包含一个VBox,并插入了一个带有ComboBox的自定义RadioButton,以便可以显示一些预定义值和" <保持现有值>"项(设置为默认选择)。
对话框启动时,我为每个可更新字段创建一个FieldEditor。
我查看表的选定项目值,并将前10个唯一值添加到FieldEditor的第一个ComboBox中。
再次使用之前收集的元数据来指定控件类型,我在VBox中插入了另一个自定义RadioButton,以允许用户指定唯一值。
对于这些反馈,我们深表感谢:
我不确定将Mass Edit功能的触发器放在何处,因此我在可编辑的Columns菜单中添加了" Mass Edit"菜单项。
自定义RadioButton控件出现了一些问题。 我想在添加的输入控件获得输入焦点时将其设置为选中。 但是并没有做到这一点,因此决定在输入控件的值更改或用户单击RadioButton的点时将其设置为选定状态。
此外,当按下表的"全选"复选框时,进行批量编辑时,我将获得所有记录。
我必须将表的阈值设置为当前过滤选择的模型的"计数",并执行" rebindTable"以确保加载所有内容以进行大规模编辑。
如果智能控件可以为我管理,我会更喜欢它,但我只是无法使它继续进行。 并且必须做很多工作才能对列表报告进行编辑。 希望这会帮助同一条船上的任何人。
一周热门 更多>