Форматер не вызывается после обновления таблицы - PullRequest
0 голосов
/ 26 июня 2019

После создания новой записи в базе данных через приложение SAPUI5 средство форматирования не вызывается.Таблица обновится, и новые данные будут видны, но кнопки не будут правильно включены.

См. Рисунки.

Before_manually_refresh After_manually_refresh

Вот код:

Обновить код:

this.byId("Table").getBinding("items").refresh();

Форматировщик:

blockedFormatterFrom: function (value) {
        var datum = new Date();
        var dateString = value.substr(6, 4) + "." + value.substr(3, 2) + "." + value.substr(0, 2);
        if (new Date(dateString) < datum) {
            editable_from = false;
        } else {
            editable_from = true;
        }
        return value;
    },
    blockedFormatterTo: function (value) {
        var datum = new Date();
        var dateString = value.substr(6, 4) + "." + value.substr(3, 2) + "." + value.substr(0, 2);
        if (new Date(dateString) < datum) {
            editable_to = false;
        } else {
            editable_to = true;
        }
        return value;
    },
    editableFormatterEdit: function (value) {
        if (editable_from && editable_to) {
            return true;
        } else {
            return false;
        }
    },
    editableFormatterDelete: function (value) {
        if (editable_to) {
            return true;
        } else {
            return false;
        }
    }

XML-просмотр

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="sap.m" controllerName="buhler.Order_Matrix.controller.View_ZSCORDERING" displayBlock="true">
<App id="idAppControl">
    <pages><Page title="{i18n>title}">
            <content>
                <Table noDataText="Keine Daten gefunden" items="{ path: '/ZSCORDERINGSet'}" id="Table" >
                    <headerToolbar>
                        <Toolbar class="sapMTBHeader">

                            <Button tooltip="View Sort Settings" icon="sap-icon://sort" press="handleSortButtonPressed"/>
                            <Button tooltip="View Filter Settings" icon="sap-icon://filter" press="handleFilterButtonPressed"/>
                            <FlexBox class="alertsTablePagination" justifyContent="SpaceAround">
                                <Button id="policyChangeBtn" class="alertbutton" text="New" enabled="true" press="onNewPress"/>
                            </FlexBox>
                        <content>
                            <SearchField width="50%" search="onFilterMatrix" placeholder="Suche Verkaufsorganisation"/>
                        </content>
                        </Toolbar>
                    </headerToolbar>
                    <infoToolbar>
                        <Toolbar id="vsdFilterBar" visible="false">
                            <Text id="vsdFilterLabel"/>
                        </Toolbar>
                    </infoToolbar>
                    <items>
                        <ColumnListItem type="Active" id="item0">
                            <cells>
                                <Text text="{Vkorg}" id="text3"/>
                                <Text text="{ZzscSpSas}" id="text4"/>
                                <Text text="{path:'ValdFrom', type:'sap.ui.model.odata.type.DateTime', constraints: {displayFormat: 'Date'}, cet: true, formatter: '.blockedFormatterFrom'}" id="text5"/>
                                <Text text="{path:'ValdTo', type:'sap.ui.model.odata.type.DateTime', constraints: {displayFormat: 'Date'}, cet: true, formatter: '.blockedFormatterTo'}" id="text6"/>
                                <Text text="{ZzscIcSas}" id="text7"/></cells>
                                <Button text="Edit" press="onEditPress" enabled="{path: 'a', formatter: '.editableFormatterEdit'}"/>
                                <Button text="Delete" press="onDeletePress" enabled="{path: 'a', formatter: '.editableFormatterDelete'}"/>
                        </ColumnListItem>
                    </items>
                    <columns>
                        <Column id="column1">
                            <header>
                                <Label text="Verkaufsorganisation" id="label0"/>
                            </header>
                        </Column>
                        <Column id="column2">
                            <header>
                                <Label text="SAS Supplier" id="label1"/>
                            </header>
                        </Column>
                        <Column id="column3">
                            <header>
                                <Label text="Gültig ab" id="label2"/>
                            </header>
                        </Column>
                        <Column id="column4">
                            <header>
                                <Label text="Gültig bis" id="label3"/>
                            </header>
                        </Column>
                        <Column id="column5">
                            <header>
                                <Label text="SAS Intercompany" id="label4"/>
                            </header>
                        </Column>
                        <Column>
                            <header>
                                <Label text="Edit"/>
                            </header>
                        </Column>
                        <Column>
                            <header>
                                <Label text="Delete"/>
                            </header>
                        </Column>
                    </columns>
                </Table>
            </content>
        </Page>
    </pages>
</App>

Как обновить таблицу и запустить средства форматирования?

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Этот код решает вашу проблему ниже?

this.byId("Table").setModel(oModel);
this.getView().byId('Table').rerender();

Я пытался повторить вашу проблему, но не столкнулся с ней.После обновления модели список обновляется, и запускается мой пользовательский форматтер.См. Образец ниже:

manifest.json

"dataSources": {
    "mainService": {
        "uri": "/sap/opu/odata/sap/ZHR_MY_WORKSCHEDULE_SRV/",
        "type": "OData",
        "settings": {
            "odataVersion": "2.0",
            "localUri": "localService/metadata.xml"
        }
    }
}
......
"models": {
    "": {
        "dataSource": "mainService",
        "settings": {
            "defaultCountMode": "Inline"
        }
    }
}

Вид

<Page title="{i18n>title}">
    <headerContent>
        <Button icon="sap-icon://refresh" tooltip="Share" press="onRefresh" />
    </headerContent>
    <content>
        <List items="{/WorkSched_PendingSet}">
           <StandardListItem
              title="{EmpName}"
              description="{
                 path : 'Position',
                 formatter : '.formatter.fnFormatDescription'
              }"
              type="Active">
          </StandardListItem>
        </List>
    </content>
</Page>

Контроллер

return Controller.extend("com.demoDemo.controller.View1", {
    formatter : Formatter,

    onRefresh : function() {
        this.getView().getModel().refresh();
    }
});
0 голосов
/ 26 июня 2019
this.byId("Table").setModel(oModel);
this.getView().byId('Table').rerender();

Установите модель в таблицу и вызовите функцию rerender ()

0 голосов
/ 26 июня 2019

Не могли бы вы также поделиться представлением XML?Попробуйте принудительно обновить с this.byId("Table").getBinding("items").refresh(true);

...