sapui5 - 无法在OData v2模型中执行扩展查询

时间:2018-03-08 19:36:00

标签: odata sapui5 expand

我开发了一个小型演示应用程序,其中SAP Netweaver Gateway OData作为后端,SAPUI5 1.44作为UI。我正面临着使用OData v2模型扩展数据的问题。

我的OData服务有3个实体集:INDSetINFSetINDINFSetINDSetINDINFSet的导航为1:N,因此我可以通过以下网址获取特定IND的所有INDINF:

  

/ SAP / OPU /的OData / SAP / ZGW_ODATA_TEST_SRV / INDSet( 'IND0000001')/ INDINFSet

我的用户界面包含2个视图:

  • 主视图:只有一个表。
  • 详细视图:我显示为对话框屏幕的表单。表单包含IND实体的字段和包含INDINFSet个记录的表。

问题在于详细视图中没有数据 - 既不在主实体字段中,也不在详细信息表中。当我打开Dialog表单时,我在Chrome开发工具的“网络”选项卡中看不到任何请求 - 既不在模拟服务器上,也不在NW网关后端。

以下是主控制器中的代码,用于打开表单对话框:

var tbl = this.getView().byId('IndsTable');
var ctx = tbl.getContextByIndex(tbl.getSelectedIndex());
var oData = ctx.getProperty(ctx.sPath);
var sContentDensityClass = this.getOwnerComponent().getContentDensityClass();
var oView = this.getView();
var controller = sap.ui.controller("demo.modules.indform.controller.IndFormDialog");
controller._indFormDialog = oView.byId('IndFormDialog');
if (!controller._indFormDialog) {
    controller._indFormDialog = sap.ui.xmlfragment(oView.getId(),
        'demo.modules.indform.view.IndFormDialog', controller);
    jQuery.sap.syncStyleClass(sContentDensityClass, oView,
         controller._indFormDialog);
    oView.addDependent(controller._indFormDialog);
}
oView.bindElement({
    path: sPath,
    model: 'mInd'
});
controller.openDialog(oView);

以下是对话框本身:

<core:FragmentDefinition
  xmlns="sap.m"
  xmlns:mvc="sap.ui.core.mvc"
  xmlns:l="sap.ui.layout"
  xmlns:f="sap.ui.layout.form"
  xmlns:t="sap.ui.table"
  xmlns:fb="sap.ui.comp.filterbar"
  xmlns:core="sap.ui.core">
  <Dialog
    id="IndFormDialog"
    contentWidth="44rem"
    contentHeight="49rem"
    class="sapUiNoContentPManageing"
    showHeader="false"
    verticalScrolling="false"
    >
      <content>
        <f:SimpleForm
          class='IndForm'
          id="IndForm"
          maxContainerCols="2"
          editable="false"
          layout="ResponsiveGridLayout"
          labelSpanL="12"
          labelSpanM="12"
          labelSpanS="12"
          emptySpanL="0"
          emptySpanM="0"
          emptySpanS="0"
          columnsL="2"
          columnsM="2"
          columnsS="2">
          <f:content>
            <core:Title/>
            <Label text="Index code" />
            <Input
              type="Text"
              value="{mInd>/Id}"
            />
            <Label text="Index name" />
            <Input
              type="Text"
              value="{mInd>/Sname}"
            />
            <Label text="Actual till" />
            <DatePicker

              value="{mInd>/Eusdt}"
              />
          </f:content>
        </f:SimpleForm>

        <t:Table
          id="Infosystems"
          rows="{mInd>INDINFSet}"
          visibleRowCount="10"
          visibleRowCountMode="Auto"
          selectionMode="None"
          enableSelectAll="false"
          ariaLabelledBy="title"
          >
          <t:toolbar>
            <Toolbar>
              <Title
                id="infosystableTitle"
                text="Infosystems"
                level="H3"/>
            </Toolbar>
            <Button
              icon="sap-icon://add"
              tooltip="Add record"
              press="addInfosystem" >
              <layoutData>
                <OverflowToolbarLayoutData priority="NeverOverflow" />
              </layoutData>
            </Button>
          </t:toolbar>
          <t:columns>

             <t:Column>
              <Label text="Infosystem"/>
              <t:template>
              <ComboBox
                items="{
                    path: 'mInfs>/INFSet',
                    sorter: { path: 'Name' },
                    templateShareable: true
                  }"
                >
                <items>
                  <core:Item key="{mInfs>Id}" text="{mInfs>Name}" selectedKey="{mInd>Infosys}"/>
                </items>
              </ComboBox>
              </t:template>
            </t:Column>

            <t:Column
              width="5em">
              <Label text="Is source"/>
              <t:template>
                <CheckBox selected="{mInd>IsSrc}" />
              </t:template>
            </t:Column>
          </t:columns>
        </t:Table>

      </content>
    <buttons>
      <Button
        id="IndFormDialogButtonSave"
        text="Save"
        type="Accept"
        press="onPressSave" />
      <Button
        id="IndFormDialogButtonCancel"
        text="Close"
        type='Reject'
        press="onPressCancel" />
    </buttons>
  </Dialog>
</core:FragmentDefinition>

1 个答案:

答案 0 :(得分:0)

你可以尝试一下吗?之后告诉我......

oView.bindElement({ 
  path: sPath, 
  model: 'mInd', 
  parameters: {expand:'INDINFSet'}
});