2012-03-14 7 views
3

私はSmartGWTにデータソースを持っています。どのようにしてデータを抽出するのですか?私はfetchData()メソッドを使用して試してみましたが、その後の基準に私は何をする必要がありますどのようなデータソース上のSelectAllを実行するために値すなわちデータソースからすべてのデータを抽出するには?

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

を追加する必要がありますか?ここで

は、コードは次のとおりです。

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

あなたはデータソース上のすべての選択操作を実行しません。データバインドされたオブジェクト(例:関連付けられたListGrid。データが設定されていると仮定するとListGrid listGridにロードされた、あなただけのすべての目に見えると、録音[]を返す、または基準レコードのセットに一致する

listGrid.getRecords(); 

を呼び出します。 データバインドされたListGridsの別のオプションは、ResultSetオブジェクトを使用することです。これはあなたのデータ内の特定のレコードを検索するときに便利ですが、すべてのレコードが必要なので、getAllRecordsメソッドを使用することをお勧めします。詳細については、API

Update:あなたのコード抽出に基づいて、ListGridの代わりにTreeGridを使用していることがわかりました。したがって、あなたが使用する必要があります方法は次のとおりです。

TreeGrid.getTree().getAllNodes(); 

これは関係なく、彼らが開いたり閉じたりしている場合は、あなたにロードされたツリーのすべてのノードを、与えないだろう。 ListGrid.getRecords()は開いているノードのみを返します。デフォルトでは、TreeGridは必要に応じてデータをロードします。したがって、すべてのツリーのノードを取得する場合は、この機能を無効にしてすべてのデータを事前にロードする必要があります。もちろんこれはスピードの問題を作り出すことができます。これは、次の操作を行い達成するために:

TreeGrid.setLoadDataOnDemand(Boolean.FALSE); 
+0

をgetAllRecords() –

+0

おっと、私のミスのような方法がありません! APIリンクを使用すると、正しい方法を使用できます。いずれにしても、正しいメソッド名で回答を更新しました。 – gpapaz

+0

でもgetRecords()は機能しません... wen私はこのメソッドを使用してレコードを取得しますが、プロジェクト全体が機能しなくなります。 –

関連する問題