Javascript UI5-带有XML模型呈现问题的树表
我目前正在用XML数据模型在XML视图中构造一个树表 以下是我的XML:Javascript UI5-带有XML模型呈现问题的树表,javascript,xml,treeview,sapui5,Javascript,Xml,Treeview,Sapui5,我目前正在用XML数据模型在XML视图中构造一个树表 以下是我的XML: <?xml version="1.0" encoding="utf-8"?> <Rowsets> <Rowset> <Row> <root> <id>root</id> <level>root</level>
<?xml version="1.0" encoding="utf-8"?>
<Rowsets>
<Rowset>
<Row>
<root>
<id>root</id>
<level>root</level>
<children>
<id>01</id>
<level>01</level>
<name>Case Packer</name>
<children>
<id>0101</id>
<level>0101</level>
<name>Unscheduled</name>
</children>
<children>
<id>0102</id>
<level>0102</level>
<name>Lunch</name>
</children>
<children>
<id>0103</id>
<level>0103</level>
<name>Scheduled Operations</name>
<children>
<id>010301</id>
<level>010301</level>
<name>Cleaning</name>
</children>
<children>
<id>010302</id>
<level>010302</level>
<name>Major Changeover</name>
</children>
<children>
<id>010303</id>
<level>010303</level>
<name>Paid Break</name>
</children>
<children>
<id>010304</id>
<level>010304</level>
<name>Running Production</name>
<children>
<id>01030401</id>
<level>01030401</level>
<name>Lowrater</name>
</children>
<children>
<id>01030402</id>
<level>01030402</level>
<name>Labeler 1</name>
</children>
<children>
<id>01030403</id>
<level>01030403</level>
<name>Depalletizer</name>
</children>
<children>
<id>01030404</id>
<level>01030404</level>
<name>Filler</name>
</children>
<children>
<id>01030405</id>
<level>01030405</level>
<name>Bottle Coder</name>
</children>
</children>
</children>
</children>
</root>
</Row>
</Rowset>
</Rowsets>
但它给了我以下错误:
Uncaught Error: Path path:'/Rowsets/Rowset/Row/root', parameters: {arrayNames:['/children']} must start with a /
at d.a.getContext (sap-ui-core.js:1549)
at f.c.applyFilter (sap-ui-core.js:1381)
at f.c.checkUpdate (sap-ui-core.js:1386)
at f.B.initialize (sap-ui-core.js:1313)
at f.h._bindAggregation (sap-ui-core.js:511)
at f.z._bindAggregation (Table.js:6)
at f.h.updateBindings (sap-ui-core.js:517)
at f.h.setModel (sap-ui-core.js:528)
at constructor.onInit (TreeTableDemo.controller.js:15)
at f.a.fireEvent (sap-ui-core.js:449)
我尝试了各种排列和组合,但似乎不起作用
我做错了什么?对于XML模型,路径中不能包含根。您应该从绑定路径中删除所记录的/Rowsets 所以这条路应该是
rows="{path:'/Rowset/Row/root', parameters: {arrayNames:['/children']}}"
然而,您现在将有第二个问题,因为您的树表将看起来像这样。
这是因为XML模型的工作方式与JSON模型不同,这使得绑定路径语法有些困难
<children>
<id>01</id>
<level>01</level>
<name>Case Packer</name>
<children>
<id>0101</id>
<level>0101</level>
<name>Unscheduled</name>
</children>
</children>
01
01
封隔器
0101
0101
计划外
上文中,该模型将考虑根子节点有4个子节点。要解决这个问题,id、level和name应该是子对象的属性
所以您的treedata.xml应该是这样的<?xml version="1.0" encoding="utf-8"?>
<Rowsets>
<Rowset>
<Row>
<root id="root" level="root">
<children id="01" level="01" name="Case Packer">
<children id="0101" level="0101" name="Unscheduled" />
<children id="0102" level="0102" name="Lunch" />
<children id="0103" level="0103" name="Scheduled Operations">
<children id="010301" level="010301" name="Cleaning" />
<children id="010302" level="010302" name="Major Changeover" />
<children id="010303" level="010303" name="Paid Break" />
<children id="010304" level="010304" name="Running Production">
<children id="01030401" level="01030401" name="Lowrater" />
<children id="01030402" level="01030402" name="Labeler 1" />
<children id="01030403" level="01030403" name="Depalletizer" />
<children id="01030404" level="01030404" name="Filler" />
<children id="01030405" level="01030405" name="Bottle Coder" />
</children>
</children>
</children>
</root>
</Row>
</Rowset>
</Rowsets>
通过这个,您可以将属性绑定为{@id}、{@level}、{@name}
<t:TreeTable id="idProductionTable" rows="{path:'/Rowset/Row/root/', parameters: {arrayNames:['/children']}}">
<t:toolbar>
<Toolbar>
<Title text="Production"/>
</Toolbar>
</t:toolbar>
<t:columns>
<t:Column width="130px" demandPopin="true" id="idProdReportNode" showSortMenuEntry="false"
minScreenWidth="Tablet">
<Label text="NAME" design="Bold" class="TableLabelColor" />
<t:template>
<ObjectIdentifier text="{@name}" />
</t:template>
</t:Column>
<t:Column width="130px" demandPopin="true" id="idProdReportProdCount" showSortMenuEntry="false"
minScreenWidth="Tablet" hAlign="End">
<Label text="Level" design="Bold" class="TableLabelColor" />
<t:template>
<ObjectIdentifier text="{@level}" />
</t:template>
</t:Column>
</t:columns>
</t:TreeTable>
<?xml version="1.0" encoding="utf-8"?>
<Rowsets>
<Rowset>
<Row>
<root id="root" level="root">
<children id="01" level="01" name="Case Packer">
<children id="0101" level="0101" name="Unscheduled" />
<children id="0102" level="0102" name="Lunch" />
<children id="0103" level="0103" name="Scheduled Operations">
<children id="010301" level="010301" name="Cleaning" />
<children id="010302" level="010302" name="Major Changeover" />
<children id="010303" level="010303" name="Paid Break" />
<children id="010304" level="010304" name="Running Production">
<children id="01030401" level="01030401" name="Lowrater" />
<children id="01030402" level="01030402" name="Labeler 1" />
<children id="01030403" level="01030403" name="Depalletizer" />
<children id="01030404" level="01030404" name="Filler" />
<children id="01030405" level="01030405" name="Bottle Coder" />
</children>
</children>
</children>
</root>
</Row>
</Rowset>
</Rowsets>
<t:TreeTable id="idProductionTable" rows="{path:'/Rowset/Row/root/', parameters: {arrayNames:['/children']}}">
<t:toolbar>
<Toolbar>
<Title text="Production"/>
</Toolbar>
</t:toolbar>
<t:columns>
<t:Column width="130px" demandPopin="true" id="idProdReportNode" showSortMenuEntry="false"
minScreenWidth="Tablet">
<Label text="NAME" design="Bold" class="TableLabelColor" />
<t:template>
<ObjectIdentifier text="{@name}" />
</t:template>
</t:Column>
<t:Column width="130px" demandPopin="true" id="idProdReportProdCount" showSortMenuEntry="false"
minScreenWidth="Tablet" hAlign="End">
<Label text="Level" design="Bold" class="TableLabelColor" />
<t:template>
<ObjectIdentifier text="{@level}" />
</t:template>
</t:Column>
</t:columns>
</t:TreeTable>