在 SapUI5 或 OpenUI5 simple.GanttChartContainer 中,如何正确选择形状高亮显示?

In SapUI5 or OpenUI5 simple.GanttChartContainer, how can I have selected shapes hilight properly?

在 SAPUI5 simple.GanttChartContainer 中,我已经为所有不同的对象类型、项目..任务...里程碑...图标设置了自定义行设置对象。我使用了与此示例相同的技术:

https://sapui5.hana.ondemand.com/#/entity/sap.gantt.simple.GanttChartWithTable/sample/sap.gantt.sample.GanttChart2Shapes

在此之前,我使用了 shapes1 聚合,它会自动显示选择边框。

有人知道如何将图表 shapeSelectionSettings 应用于自定义聚合中的形状吗?或者关于为什么这些选择边界没有出现的任何其他解释?

我花了一些时间进行简化和回溯 - 这是我的观点。目前,即使 Resize 和 Connect 都启用并连接到事件处理程序,并且我的 BaseRectangles 可调整大小和可连接,但不会绘制选择,不会绘制连接器框,并且将鼠标悬停在调整大小手柄上时不会出现 EW 光标。控制器仅设置轴和加载数据。我不知道为什么它停止工作 - 我什至尝试过早期版本的 SAPUI5。

感谢任何帮助。

<View
    xmlns="sap.ui.core.mvc"
  xmlns:m="sap.m"
  xmlns:f="sap.ui.layout.form"
    xmlns:core="sap.ui.core"
    xmlns:gnt2="sap.gantt.simple"
  xmlns:projectpro="ProjectPro.controller"
  xmlns:gnt-cal="sap.gantt.def.cal"
  xmlns:axistime="sap.gantt.axistime"
    controllerName="ProjectPro.controller.MasterPlanning"
  id="MasterPlanningMain">

    <m:Page xmlns="sap.ui.table" title="{branding>/ProductName} Master Planning" showNavButton="false" contentOnlyBusy="true">
      <gnt2:GanttChartContainer id="container" enableTimeScrollSync="true">

        <!--Activities/Milestones/Relationships-->
        <gnt2:GanttChartWithTable id="ActivityView"
            shapeSelectionMode = "Single"
            shapeSelectionSettings="{color: 'red', strokeDasharray:'1,0'}"
            class="sapUiSizeCondensed"
            shapeResize="activities_shapeResize"
            shapeConnect="activities_shapeConnect"
            >
          <gnt2:table>
            <TreeTable
              selectionMode="None"
              visibleRowCountMode="Auto"
              rows="{
                          path: 'plandata>/data',
                parameters: { arrayNames: [ 'children' ] }
              }">
              <rowSettingsTemplate>
              <gnt2:GanttRowSettings rowId="{id}" relationships="{ path:'plandata>/links', templateShareable: 'true' }">
                  <gnt2:BaseRectangle 
                    shapeId="{plandata>id}"
                    time="{plandata>start_date}"
                    endTime="{plandata>end_date}"
                    resizable="true"
                    selectable="true"
                    draggable= "true"
                    connectable="true"
                    title="{plandata>text}" showTitle="true"
                    tooltip=""
                    fill="#4cc"
                    />
                <gnt2:relationships>
                  <gnt2:Relationship shapeId="{plandata>id}"
                  predecessor="{plandata>source}" successor="{plandata>target}" type="{plandata>gantttype}" tooltip="{= ${plandata>display_link} }"
                  selectable="true" />
                </gnt2:relationships>
              </gnt2:GanttRowSettings>
              </rowSettingsTemplate>

              <!--Tree Table Columns-->
              <Column sortProperty="text" filterProperty="text" width="30em">
                <m:Text text="Activity" wrapping="false"/>
                <template>
                  <m:Input value="{= ${plandata>text} }" change="nodeRenamed" class="activity_text" />
                </template>
              </Column>
            </TreeTable>
          </gnt2:table>
        </gnt2:GanttChartWithTable>
      </gnt2:GanttChartContainer>
    </m:Page>
</View>

我解决了这个问题,发现 GanttRowSettings 上的 rowId 绑定是问题所在。这绑定到 {id} 而我的数据模型在 {plandata>},所以它应该是 {plandata>id} - 更改此值解决了问题。

即使不绑定此 rowId 会完全破坏内置行为(选定形状突出显示),SAP UI5 不会向控制台输出任何错误或警告,表明选择渲染有任何问题,因此出问题真的没什么好继续的。