标签: sapui5

sap.ui.table.Table如何优化列宽

我在任何地方都找不到。在sap.ui.table.Table控件中是否可以告诉它调整所有列宽的大小,以便其内容完全可见?我在表或列实例上都没有看到任何属性/方法。

不支持吗?

非常感谢。

sapui5

5
推荐指数
1
解决办法
2万
查看次数

SAPUI5 Android App - 资源未加载

我的SAPUI5应用程序有问题.我使用Eclipse和phonegap导出我的应用程序,如果我使用以下资源用于sap-ui-core.js导出的应用程序无法在我的平板电脑上启动.通过加载浅蓝色屏幕停止屏幕.我从这里下载了运行时sapui5

<script id="sap-ui-bootstrap" src="resources/sap-ui-core.js"
    type="text/javascript" data-sap-ui-libs="sap.m, sap.ui.commons, sap.ui.ux3, sap.ui.table, sap.ui.core, sap.viz, sap.suite.ui.commons, sap.uxap, sap.ui.layout"
    data-sap-ui-theme="sap_bluecrystal">
</script>
Run Code Online (Sandbox Code Playgroud)

现在,如果我将src-path更改为sapui5服务器上的sap-ui-core.js文件,则可以正常工作并运行应用程序.上面的路径是正确的,因为我的其他文件,如css文件正确加载(相同的根)

<script id="sap-ui-bootstrap" src="https://sapui5.netweaver.ondemand.com/resources/sap-ui-core.js"
    type="text/javascript" data-sap-ui-libs="sap.m, sap.ui.commons, sap.ui.ux3, sap.ui.table, sap.ui.core, sap.viz, sap.suite.ui.commons, sap.uxap, sap.ui.layout"
    data-sap-ui-theme="sap_bluecrystal">
</script>
Run Code Online (Sandbox Code Playgroud)

android cordova sapui5

5
推荐指数
1
解决办法
857
查看次数

SAPUI5表:unbindRows和destroyColumns导致错误:无法读取未定义的属性“ shouldRender”

我正在使用名称空间中的Table对象SAPUI5's sap.ui.table

var oTableOverview = new sap.ui.table.Table();

在上rowSelectionChange,当我选择一行时,我填充了另一张表,我们称它为oTableDetail,其中已填充了一些数据。

当从第一个表中取消选择该行时,我想清除第二个表的内容,为此,我使用了:

oTableDetail.destroyColumns();

oTableDetail.unbindRows();

取消选择行时,出现以下错误:

TableRenderer.js:6未捕获的TypeError:无法读取未定义的属性“ shouldRender”

我找到了方法shouldRender的的sap.ui.table.Column类,但我不知道为什么会在细胞在这种情况下重新呈现。

我还注意到,如果我单独使用oTable.destroyColumns()或,则不会出现该错误。oTable.unbindRows()

我正在使用SAPUI5的“ 1.38.11”版本。

您能帮我确定为什么会这样吗?

编辑1:可能的解决方法是使用:

oTableDetail.setModel(new sap.ui.model.json.JSONModel({}));

oTableDetail.destroyColumns();

尽管我仍然不知道为什么前面提到的代码无法正常工作。

编辑2:我觉得有点奇怪的行为:

试图添加一个setTimeout像这样工作(错误没有发生):

oTable.destroyColumns();

setTimeout(function(){oTable.unbindRows();},50);

但是,即使延迟时间更长,也无法通过其他方式运行(错误仍然出现):

oTable.unbindRows();

setTimeout(function(){oTable.destroyColumns();},50);

javascript sapui5

5
推荐指数
0
解决办法
873
查看次数

控件中的绑定与"类"属性

我想处理Text控件(sap.m)中值的颜色.如果值为"TRUE",则颜色为绿色.否则,如果值为红色,则为红色"FALSE".

<Text
  class="{= ${HintTable>IS_ENABLED} === 'TRUE' ? 'greenTextColor' : redTextColor'}"
  text="{HintTable>IS_ENABLED}"
/>
Run Code Online (Sandbox Code Playgroud)

但它似乎没有奏效.我的意思是,class不能接受"greenTextColor"也不"redTextColor".

我做错了什么?

sapui5

5
推荐指数
1
解决办法
4732
查看次数

SAPUI5 - 数字格式本地化

我有一个与不同语言的小数的数字格式有关的问题.对于CURRENCY控件,系统根据来自URL参数的语言采用正确的格式; 美国和德国 ?sap-ui-language=DE?sap-ui-language=US

对于具有type=Number属性的输入字段,无论语言设置如何,始终使用DOT作为小数分隔符.有这个问题的解决方案吗?我有一个动态的sap.ui.table填充(对于行和列),有些行有数字字段,有些行作为文本字段,所以我从后端动态发送dataformat,如下所示;

temp = new sap.m.Input(sColumnId + index,{  value:"{path: '" + sColumnId + "'}" , type:"{DATATYPE}",  textAlign:"Right", liveChange:[handle_livechange,this], change:[handle_change, this] , editable:"{path:'EDITABLE', type:'sap.ui.model.odata.type.String'}" }
Run Code Online (Sandbox Code Playgroud)

由于某些行是基于文本的,我不能硬编码格式化程序,如下所示;

 type:'sap.ui.model.type.Float', formatOptions : {   groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2}}"
Run Code Online (Sandbox Code Playgroud)

我尝试了自定义格式化程序但不知何故在动态表格中找不到我的格式化程序功能.我试过onChange方法动态格式化,但在这种情况下我的javascript计算不起作用.

如果我可以基于具有表达式绑定的行值来控制格式化选项,它也将解决我的问题,但是下面的代码不起作用.

temp = new sap.m.Input(sColumnId + index,{  value:"{path: '" + sColumnId + ", =${DATATYPE} === 'Number' ? type:'sap.ui.model.type.Float', formatOptions : {   groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2} : type:'sap.ui.model.type.String' …
Run Code Online (Sandbox Code Playgroud)

javascript jquery localization sapui5

5
推荐指数
1
解决办法
6801
查看次数

使用Cordova s​​apui5将文件复制到路径

我想要的:快速将文件复制/移动到路径.也许从sapui5上的FileUploader从File/Blob对象获取FileEntry.

输入:FileUploader

输出:文件对象所以我通过执行以下操作选择它时得到文件:

sap.ui.getCore().byId('file-uploader-id').oFileUpload.files[0];
Run Code Online (Sandbox Code Playgroud)

所以我必须将它复制到另一个位置:" cordova.file .externalCacheDirectory".但FileUploader不为所选项提供完整路径值(出于安全原因).

我尝试了什么:

        var sPath = URL.createObjectURL(oFile);
        var pCopyFrom = new Promise((resolve, reject) => {
            window.resolveLocalFileSystemURL(sPath, resolve, reject);
        });

        var pCopyTo = new Promise((resolve, reject) => {
            var sExternalCachePath = cordova.file.externalCacheDirectory;
            window.resolveLocalFileSystemURL(sMediaPath, resolve, reject);
        });

        Promise.all([pCopyFrom, pCopyTo]).then(aValues => {
            aValues[0].moveTo(aValues[1], aValues[0].name, cbSuccess, cbError);
        });
Run Code Online (Sandbox Code Playgroud)

结果:

解决方案似乎不起作用,因为生成的路径不可用(错误代码5),此路径无效,因此使用它.

可能的方法:

  • 通过另一种方式提取文件对象的路径.
  • 使用另一个可以提供此路径的输入(直到现在我都找不到).
  • 使用文件名查找文件的路径,或者在手机上递归查找大小或某些内容.

目前的解决方案是什么(但真的很慢):

使用FileWritter编写文件.如果我有路径并且我将上述代码用于视频(持续5秒),则花费不到1秒(感谢FileEntry)来复制/移动它(使用摄像头捕获或使用cordova插件进行视频捕获-媒体捕获 …

javascript performance android cordova sapui5

5
推荐指数
1
解决办法
165
查看次数

为什么SAPUI5会多次加载类似的片段?

我有一个XML片段,并在XML视图的多个地方使用它。

<IconTabFilter text="ABC" key="1" icon="sap-icon://alphabetical-order">
    <content>
        <Table id="table1" width="auto" items="{path:'/ContactSet',parameters:{expand:'BusinessAddress,HomeAddress,OtherAddress,Photo'},filters:[{path:'Surname',operator:'StartsWith',value1:'A'},{path:'Surname',operator:'StartsWith',value1:'B'},{path:'Surname',operator:'StartsWith',value1:'C'}]}" noDataText=" {worklistView>/tableNoDataText}" busyIndicatorDelay="{worklistView>/tableBusyDelay}" growing="true" growingScrollToLoad="true" updateFinished="onUpdateFinished">
            <headerToolbar>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesHeader" type="XML"/>
            </headerToolbar>
            <columns>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesColumns" type="XML"/>
            </columns>
            <items>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesRows" type="XML"/>
            </items>
        </Table>
    </content>
</IconTabFilter>
<IconTabSeparator icon="sap-icon://process"/>
<IconTabFilter text="DEF" key="2" icon="sap-icon://alphabetical-order">
    <content>
        <Table id="table2" width="auto" items="{path:'/ContactSet',parameters:{expand:'BusinessAddress,HomeAddress,OtherAddress,Photo'},filters:[{path:'Surname',operator:'StartsWith',value1:'D'},{path:'Surname',operator:'StartsWith',value1:'E'},{path:'Surname',operator:'StartsWith',value1:'F'}]}" noDataText="{worklistView>/tableNoDataText}" busyIndicatorDelay="{worklistView>/tableBusyDelay}" growing="true" growingScrollToLoad="true" updateFinished="onUpdateFinished">
            <headerToolbar>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesHeader" type="XML"/>
            </headerToolbar>
            <columns>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesColumns" type="XML"/>
            </columns>
            <items>
                <core:Fragment fragmentName="de.cimt.cimply.AddressBook.view.worklist.tablesRows" type="XML"/>
            </items>
        </Table>
    </content>
</IconTabFilter>
Run Code Online (Sandbox Code Playgroud)

但是视图加载时间太长,尤其是在WEBIDE中。

原因是它多次加载了类似的片段文件。这是一个证据:

显示SAPUI5如何加载xml文件

问题是如何改善性能?

我不想重复代码,我需要将代码的那一部分放在一个片段中,但是我希望我的浏览器不会多次加载相同的文件。

browser performance caching sapui5

5
推荐指数
1
解决办法
99
查看次数

如何垂直对齐控件?

我在 XML 文件中的屏幕上有几个元素

<layout:VerticalLayout xmlns:layout="sap.ui.layout" xmlns="sap.m">
  <Input />
  <Button />
  <!-- ... -->
</layout:VerticalLayout>
Run Code Online (Sandbox Code Playgroud)

如何添加布局重力或垂直对齐控件之类的内容?例如,我想要元素位于屏幕中央。

sapui5

4
推荐指数
1
解决办法
2万
查看次数

ObjectListItem"按"事件未被触发

不管这个

<List id="list" items="{/Report}">
      <items> 
          <ObjectListItem   press="onSelect"  title="{TYPE}"> </ObjectListItem>
      </items>
</List>
Run Code Online (Sandbox Code Playgroud)

也不是这个

<List id="list" items="{/Report}" itemPress="onSelect">
       <items> 
           <ObjectListItem   title="{TYPE}"> </ObjectListItem>
       </items>
</List>
Run Code Online (Sandbox Code Playgroud)

火灾

onSelect : function (oEvent) {
    'use strict';
    console.log("onSelect");
}
Run Code Online (Sandbox Code Playgroud)

在控制器中.

可能是什么原因导致的 控制台中没有相关的错误消息.

javascript model-view-controller sapui5

4
推荐指数
1
解决办法
958
查看次数

UI5中更新模型,使用formatter时双向数据绑定变为单向

在我的 UI5 应用程序中,我有一个表,其中每一行都包含一个sap.m.Switch,它通过 绑定到模型formatter,因为数据来自数据库作为1/ 0,而不是true/ false,并且这可能打破了默认的双向数据绑定

为了根据此开关的编辑值更新数据模型,我实现了以下change-event:

onChangeSwitch: function onChangeSwitch(oEvent) {
    let context = oEvent.oSource.getBindingContext();
    let itemIndex = context.sPath.substr(1);
    let oModel = this.getView().byId("idTablePersons").getModel();
    oModel.oData[itemIndex].isPersonActive = (oEvent.mParameters.state) ? 1 : 0;
    oModel.refresh();
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我不确定这是否是实现此类逻辑的正确方法。
更改sap.m.Switch值后是否有更新模型的标准方法?

data-binding sapui5

4
推荐指数
1
解决办法
2487
查看次数