smartgwt學習

  1.  SelectItem:setOptionCriteria(Criteria criteria).這個方法將調用dataSource的fetch操作獲取數據

  2.  ListGrid:  fetchData(Criteria criteria):利用dataSource的fetch操作獲取數據。getCellCSSText():設置單元格          的樣式。

  3.  DynamicForm: form.editRecord(Record record) 將表單的值設置爲record的相應值。並且form的savaData()          將調用的是dataSource的update操作,而不是add操作。

 

  4.   fetchData和filterData方法具有相似的功能,不同的是是取值的方法不同。就是在關於是否不顧大小寫,或者只匹配開        始字符串方面有差別。

 

調出ListGrid的搜索行:

    setShowFilterEditor(boolean show).true表示顯示,false表示hidden。默認是null。

所以一般這個方法這麼使用:setShowFilterEditor(this.getShowFilterEditor==null? true:!this.getShowFilterEditor());

    調出搜索行之後整個listGrid的高度需要增加一行,可以這麼寫:

 

if(this.getShowFilterEditor()){
    setHeight(this.getHeight()+this.getCellHeight());
}

 

 表單驗證:

    textItem.setValidators(Validator... validator);

   比如現在設置一個正則表達式的驗證器:

RegExpValidator validator = new RegExpValidator();
validator.setErrorMessage("請輸入數字。。");
validator.setExpression("^[0-9]");

RadioGroupItem

    RadioGroupItem group = new RadioGroupItem("name","title");
    LinkedHashMap<String,String> map = new LinkedHashMap<String,String>();
    map.put("1",“已開通”);
    map.put("2",“已鎖定”);
    group.setValueMap(map);
    group.setVertical(true);//如果爲true,那麼就垂直顯示

form相關  

    1.DynamicForm 有一個saveData(DSCallback back,DSRequest request);第一個參數是回調方法,第二個參數是request對象。當使用saveData方法的時候,不必顯示傳入要提交的參數,gwt會自動將form裏定義的字段提交,如果你想額外傳入參數可以設置到request裏面。

    調用form的saveData方法,系統會自動去調用form裏datasource裏的update操作,應特別注意不是使用的add操作。

    editRecord(Record record);這句代碼的意思是根據傳入進來的record來更新表單的值。也就是表單數據的回顯。

 

    getValuesAsCriteria();--根據表單字段的值得到查詢條件對象Criteria。並且所有空字段將不會被包括到條件裏。這個對於查詢表單很有用。


TreeGrid使用

        DataSource employeeDS = EmployeeXmlDS.getInstance();  
  
        final TreeGrid treeGrid = new TreeGrid();  
        treeGrid.setLoadDataOnDemand(false);  
        treeGrid.setWidth(500);  
        treeGrid.setHeight(400);  
        treeGrid.setDataSource(employeeDS);  
        treeGrid.setNodeIcon("icons/16/person.png");  
        treeGrid.setFolderIcon("icons/16/person.png");  
        treeGrid.setShowOpenIcons(false);  
        treeGrid.setShowDropIcons(false);  
        treeGrid.setClosedIconSuffix("");  
        treeGrid.setAutoFetchData(true);  
  
  
        TreeGridField field = new TreeGridField();  
        field.setName("Name");  
        field.setCellFormatter(new CellFormatter() {  
            public String format(Object value, ListGridRecord record, int rowNum, int colNum) {  
                return record.getAttribute("Job") + ": " + value;  
            }  
        });  
  
        treeGrid.setFields(field);  
  
        treeGrid.addDataArrivedHandler(new DataArrivedHandler() {  
            public void onDataArrived(DataArrivedEvent event) {  
                treeGrid.getData().openAll();  
            }  
        });  
  
        treeGrid.draw();  
    }  
 

 

   上面一段是google的showcase裏面的,其中setShowOpenIcons(Boolean show)如果設置爲true,就表示在打開樹節點的時候,將顯示不同的圖標,這個圖標是可以通過openIconStuff屬性進行設置的。

 

   addDataArrivedHandler是當數據加載完之後會調用,上面的代碼是在數據加載完之後打開所有的節點。

  同時,也可以設置多個TreeGridField。

  Treegrid的datasource必須有一個foreignKey,和一個rootValue.

        DataSourceIntegerField reportsToField = new DataSourceIntegerField("ReportsTo", "Manager");  
        reportsToField.setRequired(true);  
        reportsToField.setForeignKey(id + ".EmployeeId");  
        reportsToField.setRootValue("1");  

   1.關於TreeGrid還有一個重點:就是titleField,就是在前臺顯示給用戶看的字段,我們可以手動通過setTitleField(String name)來進行設置,如果沒有設置gwt回尋找像"title","label","name","id"這些名稱,如果這些都沒有,那麼就選用第一個字段作爲顯示字段。

 

  2.Tree data = treeGrid.getData();--得到所有的數據

  3.TreeNode rootNode = data.getRoot();--得到根節點,注意根節點是系統內部默認的一個最高節點,不是通常所看到的頂點。

  4.TreeNode[] nodes = data.getChildren(TreeNode node);---根據父節點,得到所有的子節點。

  5.data.openFolders(TreeNode[] parentNodes)---打開傳入父節點的子節點目錄。

  6.setLoadDataOnDemand(true);默認是true.也就是說所有節點並不會全部在第一時間加載,而是在點擊事件觸發之後纔會陸續加載,相當於一種緩存機制。

  7.如果要顯示樹形菜單之間的連接線 可以使用setShowConnector(true);進行設置。

  8.提供本地數據:利用TreeGrid的setData(Tree data)或setRoot(Tree data)方法。如果setModelType(TreeModelType.PARENT)那麼就是用Tree對象的setData()而如果是CHIIDREN那麼就使用setRoot().而且這兩種方式組織數據的格式稍有差別。他們都需要爲TreeGrid樹提供一個Tree類型的數據,而Tree又需要一個TreeNode的對象數組,所以最好new一個class 繼承自TreeNode,提供相應屬性的setAttribute(String pro,String val)方法。

    當創建Tree對象有幾個方法是必須設置的:(1):setModelType(TreeModelType model)

    (2):setNameProperty(String name);設置樹節點的一個唯一的名字,方便路徑查找根節點。

    (3):setIdField(String id)--設置列表的id值,目的是爲了外鍵引用的

    (4):setParentIdField(String parentId)--設置外鍵

9.設置圖片

employeeTree.setNodeIcon("icons/16/person.png");  
employeeTree.setFolderIcon("icons/16/person.png");  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章