SAPUI5表的模板

时间:2018-01-23 04:42:44

标签: sapui5

我为控制器上的表创建了一个模板,该模板包含一些获取oData的文本单元格,但也包含一个组合框和复选框,它们具有自己的功能,在创建模板之前非常冗长。此模板最初位于XML端,但必须将其移至控制器端才能过滤正确的oData。

如何将该功能添加到复选框?另外,我可以格式化日期/时间,只显示我在xml方面的月份吗?

var oTemplate = new sap.m.ColumnListItem({
            cells: [
                new sap.m.Text({
                    text: "{ID}"
                }),

               //this does not work
                new sap.m.CheckBox({
                    select: function(){
                    this.estimatePercentageSelect();
                   }
                }),
                new sap.m.ComboBox({
                    items: [new sap.ui.core.ListItem("cMonth", {
                            text: currentMonthName,
                            key: currentMonthName
                        }),
                        new sap.ui.core.ListItem("month1", {
                            text: monthName1,
                            key: monthName1
                        }),
                        new sap.ui.core.ListItem("month2", {
                            text: monthName2,
                            key: monthName2
                        }),
                        new sap.ui.core.ListItem("month3", {
                            text: monthName3,
                            key: monthName3
                        })
                    ]
                }),
                new sap.m.Text({
                    text: "{INSTALL}"
                }),

                  //this formatting also does not work
                new sap.m.Text({
                    text: "{DATE}"
                        /*,
                        type: "sap.ui.model.type.DateTime", 
                        formatOptions: "{pattern: 'MMM'}" */
                }),
                new sap.m.Text({
                    text: "{DWN}"
                }),
                new sap.m.Text({
                    text: "{EST}"
                }), 
 new sap.m.Text({
                    text: "{PLAN}"
                })
            ]
        });

1 个答案:

答案 0 :(得分:0)

以下是我对您的代码的反馈:

  1. 复选框功能:

                 new sap.m.CheckBox({
                    select: function(){
                    this.estimatePercentageSelect();
                   }
                }),
    
  2. 此处对象会导致问题,因为将引用您的控件(复选框),而不是您的控制器。

    请改为:

                     new sap.m.CheckBox({
                        select: [
                        this.estimatePercentageSelect, this
                       ]
                    }),
    

    并在您的函数中,让对象进行检查。

    estimatePercentageSelect : function(oEvent) {
        var oSource = oEvent.getSource(); // your clicked checkbox
        var oContext = oSource.getBindingContext().getObject(); // checkbox binding object/context
        console.log(oContext);
    }
    
    1. 日期格式化程序:
    2. 创建日期对象:

      var oDateType = new sap.ui.model.type.Date({
              source: {
                pattern: "yyyymmdd"
              },
              style: "MMM"
            });
      

      然后将其传递给您的控件:

      new sap.m.Text({
          text: {
              path: "DATE",
              type: oDateType
          }
      }),
      

      如果这对您有用,请告诉我。很高兴改进代码。