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");  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Uncaught ReferenceError: isc is not defined" 错误通常发生在 Smart GWT 项目中,意味着您的项目无法找到 Smart GWT 库。 要解决这个问题,您可以尝试以下几个步骤: 1. 确保您已正确导入 Smart GWT 库:在 Eclipse 项目中,确保您已将 Smart GWT 的 JAR 文件添加到项目的构建路径中。您可以通过右键单击项目 -> Build Path -> Configure Build Path,在 "Libraries" 选项卡中添加 Smart GWT 的 JAR 文件。 2. 检查您的 HTML 页面是否正确引用了 Smart GWT 库:在您的 HTML 页面中,确保正确引用了 Smart GWT 的 JavaScript 文件。通常情况下,您需要在 HTML 页面的 `<head>` 标签中添加以下代码: ```html <script type="text/javascript" src="isomorphic/system/modules/ISC_Core.js"></script> <script type="text/javascript" src="isomorphic/system/modules/ISC_Foundation.js"></script> <!-- 其他 Smart GWT 相关的 JavaScript 文件 --> <script type="text/javascript"> isc.Page.onLoad(); </script> ``` 请注意,具体的引用路径可能会因您的项目结构而有所不同,请根据实际情况进行调整。 3. 检查您的模块加载配置是否正确:在 Smart GWT 项目中,您可能会使用模块加载器来加载所需的模块。确保您在配置文件(通常是 isomorphic/SC.gwt.xml)中正确声明了要加载的模块。例如: ```xml <module rename-to='your-module-name'> <!-- 其他模块配置 --> <inherits name='com.smartgwt.SmartGwt'/> <!-- 其他 inherits --> </module> ``` 如果您仍然遇到问题,建议检查您的项目配置和文件路径是否正确,并确保 Smart GWT 库已正确导入和引用。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值