如何从数据源中提取所有数据?

时间:2012-03-14 15:36:25

标签: java gwt smartgwt

我在SmartGWT中有一个数据源。我如何从中提取数据?我尝试过使用fetchData()方法但是在标准中我需要添加一个值,即

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

为了在DataSource上执行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 个答案:

答案 0 :(得分:1)

您不在DataSource上执行select all操作。你宁愿在它的数据绑定对象上做,例如关联的ListGrid。如果已在ListGrid listGrid中设置和加载数据,则只需调用

listGrid.getRecords();

返回Record [],其中包含所有可见或匹配的一组条件记录。 对于数据绑定ListGrids,另一个选项是使用ResultSet对象。这很方便 当你想在数据中找到特定记录时,但由于你需要所有记录,我建议你只使用getAllRecords方法。有关详细信息,请查看API

更新:根据您的代码提取,我现在可以看到您使用的是TreeGrid,而不是ListGrid。因此,您应该使用的方法是:

TreeGrid.getTree().getAllNodes();

这将为您提供已加载的树的所有节点,无论它们是打开还是关闭。 ListGrid.getRecords()只返回打开的节点。请注意,默认情况下,TreeGrid会根据需要加载其数据。因此,如果要检索所有树的节点,则必须停用此功能并预加载所有数据。这当然可以产生速度问题。要实现此目的,请执行以下操作:

TreeGrid.setLoadDataOnDemand(Boolean.FALSE);