首页 文章

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

提问于
浏览
0

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

我的OData服务有3个实体集: INDSetINFSetINDINFSet . INDSet 有一个1:N导航到 INDINFSet ,所以我可以通过以下URL获取特定IND的所有INDINF:

/ sap / opu / odata / SAP / ZGW_ODATA_TEST_SRV / INDSet('IND0000001')/ INDINFSet

我的UI包含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

    你能试试吗?之后告诉我......

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

相关问题