1

リストグリッドとポイント付きのopenlayersマップを持つサイトがあります。これらのいずれかをクリックすると、アプリケーションはスクロールしてこのレコードにマークを付けます。これは標準のリストグリッドでは機能しますが、グループ化されたリストグリッドでは機能しません。

lg = new ListGrid();
lg.setWidth(330);
lg.setDataSource(ds1);
lg.setAutoFetchData(true);
lg.setSortField("KU_NAME");
lg.setGroupStartOpen(GroupStartOpen.ALL);
lg.setGroupByField("KU_NAME");
lg.setShowFilterEditor(true);

kuName = new ListGridField("KU_NAME", "Künstler Name",150);

// Standorte
ListGridField stdOrt = new ListGridField("STDORT_NR","Standort Nr.");
ListGridField oid = new ListGridField("OID","OID.");
lg.setFields(stdOrt,kuName,oid);

そして選択:

String stdortOID = stdOrtOIDjso.toString();
ListGridRecord[] records = lg.getRecords();
    int i;
    for (i = 0; i < records.length; i++) {
        if (records[i].getAttribute("OID").equalsIgnoreCase(stdortOID)){
            break;
    }
}
lg.deselectAllRecords();
lg.selectRecord(i);
lg.scrollToRow(lg.getRecordIndex(record));

その理由は、レコードにはグループ名の値のみがあり、他の属性は使用できないためです。

4

2 に答える 2

-1

私は同じ必要があり、以下は私にとってはうまくいきます。getGroupTree() を使用して、グループ化を気にせずに目的のプロパティ (列の値) を検索できます。正確なノードを識別するために、一意の値 (つまり、一意のキー) を検索してください。

    Tree tree = getGroupTree();
    if (tree != null) {
        TreeNode node = tree.find("property", "value");
        if (node != null) {
            selectSingleRecord(node);
            scrollToRow(getRecordIndex(node));
            markForRedraw();
        }
    }
于 2012-10-24T22:40:15.677 に答える