【问题标题】:How to make only one cell editable in smart table sapui5如何在智能表 sapui5 中仅使一个单元格可编辑
【发布时间】:2020-09-01 18:24:25
【问题描述】:

我正在使用 sapui5 智能表来列出我的产品。它包括产品代码、产品描述和订购数量。

在这三个字段中,我只想更新订单数量。它应该是表格中的内联编辑。

在我的智能表中,我已将“可编辑”属性启用为“真”。它使整行都是可编辑的。我不想让整行都可编辑,我只想让一个单元格可编辑。

Example

 <smartFilterBar:SmartFilterBar id="smartFilterBar" entityType="ZDEMO_C_MyEntityType" persistencyKey="SmartFilter_Explored">
 </smartFilterBar:SmartFilterBar>

 <smartTable:SmartTable id="mySmartTable" 
      smartFilterId="smartFilterBar"
      tableType="GridTable" 
      editable="true" 
      entitySet="ZDEMO_C_MyEntity" 
      useVariantManagement="false" 
      useTablePersonalisation="true" 
      header="My Products" 
      showRowCount="true" 
      useExportToExcel="true" 
      enableAutoBinding="true">
 </smartTable:SmartTable>

【问题讨论】:

    标签: sapui5


    【解决方案1】:

    您可以在智能表中添加一个 sap ui 表并添加具有 customdata 属性的列。请按照以下步骤操作。

    1. 将 editable="true" 设为 editable="false"
    2. 在您的 xml 中,确保添加此命名空间 xmlns:core="sap.ui.core"
    3. 在 smarttable 标签内添加下面。

      <smartTable:SmartTable .................................
      
               <Table>
                  <columns>
                      <Column>
                          <customData>
                              <core:CustomData key="p13nData" value='\{"columnKey": "OrderQty", "leadingProperty": "OrderQty", "columnIndex":"2"}'/>
                          </customData>
                          <Text text="Order Qty"/>
                      </Column>
      
                  </columns>
                  <items>
                      <ColumnListItem>
                          <cells>
                              <Input value="{OrderQty}" type="Number" editable="true"/>
                          </cells>
                      </ColumnListItem>
                  </items>
              </Table>
      
        </smartTable:SmartTable>
      

    【讨论】:

      【解决方案2】:

      我可以看到两种方式:

      1. 利用“字段控件”的概念。它需要在您的 实体类型 中添加一个特殊属性,这些属性定义了字段(单元格)的状态。还必须引入一些注释(在后端的 metadata.xml 中)以启动处理。

        这是一个链接,其中以 Form 控件为例描述的概念,但同样的规则也适用于 Tablehttps://blogs.sap.com/2017/06/06/dynamic-field-control-using-annotations-in-sapui5/

      2. 在您的 XML 中手动重新定义 表行,并将所需的单元格与 本地 JSON 模型的属性绑定,这可以根据情况进行更改在某些情况下(例如按下编辑按钮)。

      从架构的角度来看,第一种方法更好,但需要一些数据模型修改(从后端)。

      第二种方法允许在 UI 上做所有事情并编写一些复杂的 UI 逻辑,这些逻辑定义了单元格的状态。

      你选择。

      【讨论】:

        【解决方案3】:

        在表格内添加以下标签以使您的列可编辑

        <table:Column sortProperty="Max_Capacity" filterProperty="Max_Capacity"  id="maxCapCol">
            <Label text="Max Capacity"/>
            <table:template>
                <Input text="{Max_Capacity}" />
            </table:template>
        </table:Column>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-26
          • 1970-01-01
          • 1970-01-01
          • 2015-01-11
          • 2015-11-11
          • 2020-06-06
          • 2015-07-03
          • 1970-01-01
          相关资源
          最近更新 更多