Как извлечь все данные из источника данных? - PullRequest
3 голосов
/ 14 марта 2012

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

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

Чтобы выполнить selectall для источника данных, что мне нужно сделать?

Вот код:

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 Ответ

1 голос
/ 14 марта 2012

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

listGrid.getRecords();

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

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

TreeGrid.getTree().getAllNodes();

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

TreeGrid.setLoadDataOnDemand(Boolean.FALSE);
...