使用ADF列表视图的主从数据
最近,從UI角度來看,ADF Faces 表組件不再被認(rèn)為很酷。 對(duì)于顯示數(shù)據(jù)集合, 列表視圖今天應(yīng)該很酷。 這并不意味著我們根本不應(yīng)該使用af:table 。 在某些情況下(經(jīng)常是:)),表比列表視圖更適合。 但是,列表視圖組件看起來非常好,它非常適合現(xiàn)代UI趨勢(shì),并且絕對(duì)值得在ADF應(yīng)用程序中廣泛使用。
與數(shù)據(jù)收集有關(guān)的最常見用例之一是顯示主從數(shù)據(jù)。 在這篇文章中,我將展示我們可以使用List View對(duì)此做些什么。
列表視圖組件提供了開箱即用的功能,可以通過使用groupHeaderStamp構(gòu)面來顯示層次結(jié)構(gòu)數(shù)據(jù)。
假設(shè)在應(yīng)用程序中定義了Departments-Employees層次結(jié)構(gòu):
如果我們將詳細(xì)信息集合“雇員”拖到頁(yè)面上并選擇“ ADF列表視圖”作為所需組件,該向?qū)⒃试S我們包括一個(gè)包含來自父集合的屬性的組標(biāo)題:
結(jié)果,頁(yè)面上的列表視圖將包含具有Department屬性的groupHeaderStamp構(gòu)面:
<af:listView value="#{bindings.Departments.treeModel}" var="item" ...fetchSize="#{bindings.Departments.rangeSize}" id="lv1"><af:listItem id="li1"><af:panelGridLayout id="pgl2"><af:gridRow marginTop="5px" height="auto" marginBottom="5px" id="gr1"><af:gridCell marginStart="5px" width="34%" id="gc1"><af:outputFormatted value="#{item.bindings.EmployeeId.inputValue}"id="of1"/></af:gridCell>...</af:panelGridLayout></af:listItem><f:facet name="groupHeaderStamp"><af:listItem id="li2"><af:outputFormatted value="#{item.bindings.DepartmentName.inputValue}"id="of6"/></af:listItem></f:facet> </af:listView>它看起來像這樣:
看起來不錯(cuò),但實(shí)際上并不是我所需要的! 我的要求是實(shí)現(xiàn)這樣的事情:
因此,每個(gè)部門都有一個(gè)包含兩個(gè)選項(xiàng)卡的面板來表示:常規(guī)部門信息和員工列表。 這個(gè)用例可以使用訪問從樹模型節(jié)點(diǎn)定義可以輕松實(shí)現(xiàn)。 頁(yè)面def文件中的列表視圖的樹模型如下所示:
<tree IterBinding="DepartmentsIterator" id="Departments"><nodeDefinition DefName="DepartmentsDeafultVO" Name="Departments0"><AttrNames><Item Value="DepartmentId"/><Item Value="DepartmentName"/></AttrNames><Accessors><Item Value="Employees"/></Accessors></nodeDefinition><nodeDefinition DefName="EmployeesDeafultVO" Name="Departments1"><AttrNames><Item Value="EmployeeId"/><Item Value="FirstName"/><Item Value="LastName"/><Item Value="Email"/></AttrNames></nodeDefinition> </tree>在Departments0節(jié)點(diǎn)定義中定義了“ 雇員”訪問者。 它使用員工 視圖鏈接訪問器來檢索每個(gè)部門行的詳細(xì)記錄。 詳細(xì)記錄的結(jié)構(gòu)在Departments1節(jié)點(diǎn)定義中描述。
我們將像這樣使用這種分層樹模型:
<af:listView value="#{bindings.Departments.treeModel}" var="item" ...> ? ? ? ? ? ?<af:listItem id="li1"><af:panelTabbed position="above" id="pt1" childCreation="lazyUncached"><af:showDetailItem id="tab1" text="Department"><af:panelFormLayout id="pfl1" inlineStyle="height:150px;"><af:panelLabelAndMessage label="#{item.bindings.DepartmentId.hints.label}"id="plam1"><af:inputText value="#{item.bindings.DepartmentId.inputValue}"id="ot1"/></af:panelLabelAndMessage>...</af:panelFormLayout></af:showDetailItem><af:showDetailItem id="sdi1" text="Employees"><af:listView value="#{item.Employees}" var="empItem" ...><af:listItem id="li2"><af:panelGridLayout id="pgl2"><af:gridRow ?id="gr1"><af:gridCell id="gc1"><af:outputFormatted value="#{empItem.bindings.EmployeeId.inputValue}"id="of1"/></af:gridCell>...</af:panelGridLayout></af:listItem></af:listView></af:showDetailItem></af:panelTabbed></af:listItem> </af:listView>因此,每個(gè)列表項(xiàng)都包含一個(gè)在內(nèi)部標(biāo)記的面板,而Employees選項(xiàng)卡則包含一個(gè)引用Employees訪問器的嵌套 列表視圖 (實(shí)際上,它可以是任何東西,例如一個(gè)表)。
- 此職位的示例應(yīng)用程序可在此處獲得 。
它需要JDeveloper 12.1.3。
而已!
翻譯自: https://www.javacodegeeks.com/2015/12/master-detail-data-adf-list-view.html
總結(jié)
以上是生活随笔為你收集整理的使用ADF列表视图的主从数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么攻击dns(怎么攻击dns ddos
- 下一篇: 拼图项目:一个不完整的难题