2012-03-14 4 views
3

У меня есть источник данных в SmartGWT. Как извлечь данные из него? Я попытался с помощью fetchData() метод, но затем в критериях, мне нужно добавить значение т.е.Как извлечь все данные из источника данных?

Criteria cr = new Criteria(); 
cr.addCriteria("Name", "Name_Value"); 

Для того, чтобы выполнить SelectAll на DataSource, что делать мне нужно сделать?

Вот код:

import com.smartgwt.client.types.Alignment; 
import com.smartgwt.client.types.DragDataAction; 
import com.smartgwt.client.widgets.TransferImgButton; 
import com.smartgwt.client.widgets.events.ClickEvent; 
import com.smartgwt.client.widgets.events.ClickHandler; 
import com.smartgwt.client.widgets.layout.HStack; 
import com.smartgwt.client.widgets.layout.VStack; 
import com.smartgwt.client.widgets.tree.Tree; 
import com.smartgwt.client.widgets.tree.TreeGrid; 

import com.google.gwt.core.client.EntryPoint; 
import com.smartgwt.client.widgets.tree.TreeGridField; 

public class TreeDragNodesSample implements EntryPoint { 
TreeGrid grid1 = new TreeGrid(); 
TreeGrid grid2 = new TreeGrid(); 
String name=null; 
    public void onModuleLoad() { 
Tree test = new Tree(); 

     grid1.setDragDataAction(DragDataAction.COPY); 
     grid1.setAutoFetchData(true); 
     grid1.setDataSource(EmployeeXmlDS.getInstance()); 
     grid1.setWidth(200); 
     grid1.setHeight(200); 
     grid1.setShowEdges(true); 
     grid1.setBorder("0px"); 
     grid1.setBodyStyleName("normal"); 
     grid1.setShowHeader(false); 
     grid1.setLeaveScrollbarGap(false); 
     grid1.setEmptyMessage("<br>Drag & drop parts here"); 
     grid1.setManyItemsImage("cubes_all.png"); 
     grid1.setAppImgDir("icons/16/"); 
     grid1.setNodeIcon("cube.png"); 
     grid1.setFolderIcon("person.png"); 
     grid1.setCanReorderRecords(true); 
     grid1.setCanAcceptDroppedRecords(true); 
     grid1.setCanDragRecordsOut(true); 
     grid1.setCanAcceptDrop(true); 
     grid1.setCanDrop(true); 
     TreeGridField tname = new TreeGridField("Name"); 
     TreeGridField child = new TreeGridField("ChildID"); 
     TreeGridField reps = new TreeGridField("ReportsTo"); 
     grid1.setFields(tname); 

     grid2.setLeft(250); 
     grid2.setAutoFetchData(true); 
     grid2.setDataSource(EmployeeXmlDSDrop.getInstance()); 
     grid2.setWidth(200); 
     grid2.setHeight(200); 
     grid2.setShowEdges(true); 
     grid2.setBorder("0px"); 
     grid2.setBodyStyleName("normal"); 
     grid2.setShowHeader(false); 
     grid2.setLeaveScrollbarGap(false); 
     grid2.setEmptyMessage("<br>Drag & drop parts here"); 
     grid2.setManyItemsImage("cubes_all.png"); 
     grid2.setAppImgDir("icons/16/"); 
     grid2.setNodeIcon("cube.png"); 
     grid2.setFolderIcon("person.png"); 
     grid2.setCanReorderRecords(true); 
     grid2.setCanAcceptDroppedRecords(true); 
     grid2.setCanDragRecordsOut(true); 
     grid2.setCanAcceptDrop(true); 
     grid2.setCanDrop(true); 
     TreeGridField tname2 = new TreeGridField("Name"); 
     TreeGridField child2 = new TreeGridField("ChildID"); 
     TreeGridField reps2 = new TreeGridField("ReportsTo"); 
     grid2.setFields(tname2); 

     VStack moveControls = new VStack(10); 
     moveControls.setWidth(32); 
     moveControls.setHeight(74); 
     moveControls.setLayoutAlign(Alignment.CENTER); 

     TransferImgButton rightArrow = new TransferImgButton(TransferImgButton.RIGHT, new ClickHandler() { 

      public void onClick(ClickEvent event) { 
       grid2.transferSelectedData(grid1); 
      } 
     }); 
     moveControls.addMember(rightArrow); 

     TransferImgButton leftArrow = new TransferImgButton(TransferImgButton.LEFT, new ClickHandler() { 

      public void onClick(ClickEvent event) { 
       grid1.transferSelectedData(grid2); 
      } 
     }); 
     moveControls.addMember(leftArrow); 

     HStack grids = new HStack(10); 
     grids.setHeight(160); 
     grids.addMember(grid1); 
     grids.addMember(moveControls); 
     grids.addMember(grid2); 
     grids.draw(); 
    } 
} 

ответ

1

Вы не выполнить отборное все операции на DataSource. Вы скорее сделаете это на своем объекте с привязкой к базе данных, например. связанный с ListGrid. При условии, что данные были установлены и загружены в ListGrid listGrid, вы просто звоните

listGrid.getRecords(); 

который возвращает запись [], со всеми видимыми, или соответствующий набору критериев записей. Другим вариантом, для привязанных к базе данных ListGrids, является использование объекта ResultSet. Это удобно , когда вы хотите найти определенные записи в своих данных, но поскольку вам требуются все записи, я бы предложил вам использовать метод getAllRecords. Для получения дополнительной информации см. API

Обновление: на основе вашего кода вы можете увидеть, что вы используете TreeGrid вместо ListGrid. Таким образом, метод вы должны использовать это:

TreeGrid.getTree().getAllNodes(); 

Это даст вам все узлы дерева, которые были загружены, независимо от того, если они открыты или закрыты. ListGrid.getRecords() вернет только открытые узлы. Обратите внимание, что TreeGrid по умолчанию загружает свои данные по запросу. Поэтому, если вы хотите получить все узлы дерева, вам необходимо отключить эту функцию и предварительно загрузить все данные. Это, конечно, может вызвать проблемы со скоростью. Для достижения этой цели выполните следующие действия:

TreeGrid.setLoadDataOnDemand(Boolean.FALSE); 
+0

нет никакого способа, как getAllRecords() –

+0

К сожалению, моя ошибка! Ссылка API привела бы вас к правильному методу использования. В любом случае, я обновил свой ответ с правильным именем метода. – gpapaz

+0

даже getRecords() не работает ... wen i get records, используя этот метод, весь проект перестает работать. –

Смежные вопросы