在UI5智能表中使单列可编辑

时间:2017-06-01 11:39:03

标签: javascript xml sapui5

我想创建一个带有可编辑列的智能表。我正在使用metadata注释来生成表格。表属性(editable = "true")使所有列都可编辑。在我的情况下,我想只编辑一个列。我尝试使用属性sap:updatable="true",但它没有用。有任何想法吗。 提前致谢。 这是我的观点:

<mvc:View 
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc"
    controllerName="QuickStartApplication3.controller.View1"
    xmlns:smartFilterBar="sap.ui.comp.smartfilterbar"
    xmlns:smartTable="sap.ui.comp.smarttable">
    <smartFilterBar:SmartFilterBar 
        id="smartFilterBar"
        entityType="Product">
        <smartFilterBar:controlConfiguration>
            <smartFilterBar:ControlConfiguration
                key="ProductId"
                visibleInAdvancedArea="true" 
                preventInitialDataFetchInValueHelpDialog="true" >
            </smartFilterBar:ControlConfiguration>
        </smartFilterBar:controlConfiguration>

        <smartFilterBar:controlConfiguration>
            <smartFilterBar:ControlConfiguration
               key="Name"
               visibleInAdvancedArea="true" 
               preventInitialDataFetchInValueHelpDialog="true" >
            </smartFilterBar:ControlConfiguration>
        </smartFilterBar:controlConfiguration>

        <smartFilterBar:controlConfiguration>
            <smartFilterBar:ControlConfiguration
                key="Category"
                visibleInAdvancedArea="true" 
                preventInitialDataFetchInValueHelpDialog="true" >
            </smartFilterBar:ControlConfiguration>
        </smartFilterBar:controlConfiguration>

    </smartFilterBar:SmartFilterBar>

    <smartTable:SmartTable 
        id="smartTable_ResponsiveTable"
        smartFilterId="smartFilterBar" 
        tableType="ResponsiveTable" 
        editable="false"
        entitySet="Products" 
        useVariantManagement="false"
        useTablePersonalisation="true" 
        header="Products" 
        showRowCount="true"
        useExportToExcel="true" 
        enableAutoBinding="true">
    </smartTable:SmartTable>
</mvc:View>

2 个答案:

答案 0 :(得分:0)

我没有足够的代表对你的问题做一个简单的评论,但是你能提供一个你的观点样本,以便我能更准确地理解你的所作所为吗?

您是否尝试过使用sap.m.Table对象,如文档中所述: https://sapui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.TableEditable/preview

为了只有某些单元格可编辑,您可以通过所使用的模板进行管理,请参阅下面我如何在控制器的onInit方法中更改模板:

onInit : function(evt) {
                this.oModel = new JSONModel(jQuery.sap.getModulePath(
                        "sap.ui.demo.mock", "/products.json"));
                this.oTable = this.getView().byId("idProductsTable");
                this.getView().setModel(this.oModel);
                this.oReadOnlyTemplate = this.getView().byId(
                        "idProductsTable").removeItem(0);
                this.rebindTable(this.oReadOnlyTemplate, "Navigation");
                this.oEditableTemplate = new sap.m.ColumnListItem({
                    cells : [ new sap.m.ObjectIdentifier({
                        title : "{Name}",
                        text : "{ProductId}"
                    }), new sap.m.Input({
                        value : "{Quantity}",
                        description : "{UoM}"
                    }), new sap.m.Input({
                        value : "{WeightMeasure}",
                        description : "{WeightUnit}"
                    }), new sap.m.Input({
                        value : "{Price}",
                        description : "{CurrencyCode}"
                    }) ]
                });

如果您不使用此对象,请告诉我哪一个,我可以帮助。

答案 1 :(得分:0)

请查看“Preview”-screenshot and the metadata.xml

如果设置editable =&#34; true&#34;会发生什么?并使用sap注释'Products'的所有属性:updatable =“false”, 除了可以编辑的单个属性,你设置为sap:updatable =“true”。

不要使用sap:updatable注释实体集'Products'(或确保sap:updatable =“true”)。