Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在UI5表的不同行中添加不同的控件_Javascript_Data Binding_Sapui5 - Fatal编程技术网

Javascript 在UI5表的不同行中添加不同的控件

Javascript 在UI5表的不同行中添加不同的控件,javascript,data-binding,sapui5,Javascript,Data Binding,Sapui5,我有tablesap.ui.table.tableans我有一个模型,其中一些记录有链接,而一些没有链接。我想在列中的sap.m.link组件中呈现链接,当链接在记录中不可用时,它应该在列中的sap.m.Text中呈现“未提供链接” 由于sap.ui.table.Column具有不支持绑定聚合的模板聚合,因为它只支持0或1个控件。格式化程序也适用于这里。是否有任何方法可以在运行时根据模块数据更改列的内容 我的模块数据是: var data = [{ id : 1, link : 'a

我有table
sap.ui.table.table
ans我有一个模型,其中一些记录有链接,而一些没有链接。我想在列中的
sap.m.link
组件中呈现链接,当链接在记录中不可用时,它应该在列中的
sap.m.Text
中呈现“未提供链接”

由于
sap.ui.table.Column
具有不支持绑定聚合的模板聚合,因为它只支持0或1个控件。格式化程序也适用于这里。是否有任何方法可以在运行时根据模块数据更改列的内容

我的模块数据是:

var data = [{
   id : 1,
   link : 'abc.com'
},
{
   id : 2
},
{
   id : 3,
   link : 'pqr.com'
}]
我提供代码:

var link = new sap.m.Link({text : "{link}"});
var noLink = new sap.m.Text({text : "Link is not provided."});

var idColumn = new sap.ui.table.Column({
    label : [new sap.m.Label({text : "ID"})],
    template : [new sap.m.Text({text : "{id}"})]
});

var linkColumn = new sap.ui.table.Column({
   label : [new sap.m.Label({text : "Link"})],
   template : [??????]
});

var table = new sap.ui.table.Table({
    columns : [idColumn, linkColumn]
});

var model = new sap.ui.model.json.JSONModel();
model.setData({items : data});
table.setModel(model);
table.bindRows("/items");

我想根据模块中的数据在
likColumn
运行时列中添加
链接
noLink
。如何实现这一点?

可以使用
格式化程序更改每列的显示内容

e、 g:

更新:这是一个jsbin,提供了您所需内容的完整示例:

当链接不可用时,我想在列中添加
sap.m.Text
,当链接可用时,我想在列中添加
sap.m.link
。据我所知,这是不可能的,但您可以将sap.m.link元素的行为更改为类似于sap.m.Text。在这种情况下,您可以在
onAfterRendering
函数中执行此操作。查看更新的示例。好的,我可以试试这个。谢谢你的帮助!!请你澄清一下:1。您需要两列还是一列,并根据链接可用性,将其显示为sap.m.link或sap.m.Text?2.或者,您想要两个单独的列吗?另外,请查看此问题:。在sap.ui.table.table的单独行中不可能有不同的控件。但是,在sap.m.表中也可以这样做。
   new sap.m.Link({
      width: "20em",
      //editable: false,
      //text: "{items>link}"   
      text: {
        path: "items>link",
        formatter: function(link){
          if (link === undefined) return "Link is not provided"
          return link;
        }
      }
    });

...

oTable.addEventDelegate({
    onAfterRendering: function(){
        $('#idTable a:contains("Link is not provided")').removeClass("sapMLnk");
    }
}, oTable);