2012-04-25 2 views
0

У меня есть сайт со списком и карта с открытыми картами с точками. Когда я нахожусь на одном из них, приложение должно прокрутить и пометить эту запись. Это работает со стандартным списком, но сгруппированным listgrid он не работает.Как выбрать запись в сгруппированном списке smartgwt listgrid?

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)); 

причина заключается в том, что в записи только значение имени группы и другие attributs недоступны.

+0

ungroup/group works, но scrollToRow прокручивает неправильную строку. – Rotarius

ответ

0

Когда группировка включен, то все данные «трансформируется» в дерево и listgrid сам содержат данные для групп, так что вы должны смотреть на ваши записи в этом дереве. Заменить последние 3 строки с (модифицированным) Витторио Paternostro предложение:

Tree tree = lg.getGroupTree(); 
if (tree != null) { 
    TreeNode node = tree.find("OID", stdortOID); 
    if (node != null) { 
     lg.selectSingleRecord(node); 
     lg.scrollToRow(getRecordIndex(node)); 
     lg.markForRedraw(); 
    } 
} 

Примечание: Вместо deselectAllRecords + selectRecord использования упрощена selectSingleRecord.

-1

У меня была такая же потребность, и следующие работы отлично подходят для меня. Вы можете использовать getGroupTree() и искать в нем желаемое свойство (значение столбца), не беспокоясь о группировке. Убедитесь, что вы ищете уникальные значения (т. Е. Уникальный ключ) для идентификации точного узла.

Tree tree = getGroupTree(); 
    if (tree != null) { 
     TreeNode node = tree.find("property", "value"); 
     if (node != null) { 
      selectSingleRecord(node); 
      scrollToRow(getRecordIndex(node)); 
      markForRedraw(); 
     } 
    } 
+1

Пожалуйста, объясните свое решение, только ответы на код не очень хорошие ответы. – markus

+0

Это не похоже на конкретный код пользователя/ситуацию .... –