如何在智能表格sapui5中仅使一个单元格可编辑

如何在智能表格sapui5中仅使一个单元格可编辑,sapui5,Sapui5,我正在使用sapui5智能表列出我的产品。它包括产品代码、产品描述和订单数量 在这三个字段中,我只想更新订单数量。它应该是表中的内联编辑 在我的智能表中,我已将属性“editable”启用为“true”。它使整行可编辑。我不想使整行可编辑,而是只想使一个单元格可编辑 我可以看到两种方法: 使用“字段控件””概念。它需要在实体类型中添加一个特殊属性,该属性定义字段(单元格)的状态。还必须引入一些注释(后端在metadata.xml中)来启动处理 这里有一个链接,其中以表单控件为例描述了概念,但

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

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

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


我可以看到两种方法:

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

    这里有一个链接,其中以表单控件为例描述了概念,但同样的规则也适用于

  • 在XML中手动重新定义表行,并根据本地JSON模型的属性绑定所需的单元格,本地JSON模型的属性可以根据某些条件进行更改(例如,按编辑按钮)

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

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


    您可以选择。

    您可以在智能表中添加sap ui表,并使用customdata属性添加列。遵循以下步骤

  • 将editable=“true”设为editable=“false”
  • 在xml中,确保添加此命名空间xmlns:core=“sap.ui.core”
  • 在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>
    
    在表中添加以下标记,使列可编辑
    
    
    
    <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>
    
    <table:Column sortProperty="Max_Capacity" filterProperty="Max_Capacity"  id="maxCapCol">
        <Label text="Max Capacity"/>
        <table:template>
            <Input text="{Max_Capacity}" />
        </table:template>
    </table:Column>