我在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();
}
}
答案 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);