以编程方式获取ViewPanel标头

时间:2013-12-11 22:35:52

标签: xpages xpages-ssjs

这段代码确实为我提供了我想要的comboBox值,但我想知道是否有办法以编程方式获取viewPanel中的viewColumn ID,viewColumnHeader ID和列数。 viewPanel使用JDBCQuery作为数据源。

var itemList:java.util.Vector = new java.util.Vector;
var colID = "viewColumn"; //default id assigned
var colHeaderID = "viewColumnHeader"; //default id assigned
var end = 10; //max # of viewPanel columns
itemList.add("Select Column");
for(x=1;x<end;x++) {
    try {
        if(getComponent(colID + x) == null) {
            throw ("Only " + (x-1) + " columns in ViewPanel");
        x=end;
        } else {
        var disColID = getComponent(colID + x).getColumnName();
        }
        var disColHeaderID = getComponent(colHeaderID + x).getValue();
        itemList.add(disColHeaderID + "|" + disColID);
    } catch (e) {
        dBar.info(e.toString());
    }
}

itemList

当前的方式显然仅限于9列,并确保viewColumn ID和viewColumnHeader ID具有特定的命名结构,这将很好地摆脱。

1 个答案:

答案 0 :(得分:2)

通过使用viewPanelObj.getChildren()获取视图面板的子组件,可以访问视图面板的所有列。列标题是视图列的一部分,在获得视图列的句柄后,您可以使用viewColumnObj.getHeader()访问标题。

因此,访问所有视图列和视图标题的示例SSJS代码如下所示:

var viewPnl:com.ibm.xsp.component.xp.XspViewPanel = getComponent("viewPanel1");
var list:java.util.List = viewPnl.getChildren();
for (var i=0 ; i<list.size() ; i++) {
    var viewCol:com.ibm.xsp.component.xp.XspViewColumn = list.get(i);
    var viewHdr:com.ibm.xsp.component.xp.XspViewColumnHeader = viewCol.getHeader();

    // Perform required operations on objects of viewCol & viewHdr
}