1. Javascript中对应的数据结构

    Wade.DatasetList 类似多列数据结构的Javascript实现,主要包括以下方法和属性

    1. length属性 得到所包含的数据行数长度
    2. get(index[int],key[string])方法 获取一行数据,如果设置了key,并且获取的数据是Wade.DataMap格式的数据,则返回其中名称为key的项
    3. each(fn[function],scope[object])方法 遍历数据
    4. add(o[object])方法 增加一行数据
    5. remove(o[object])方法 删除数据列中的一列
    6. removeAt(index[int])方法 删除数据列中的一列
    7. indexOf(o[object])方法 获取某列数据的行标
    8. getCount()方法 获取所包含的数据行记录数
    9. toString(false|true) 方法 生成字符串,当参数为true时生成旧的格式字符串,当参数为false或不填时生成json语义的字符串

    Wade.DataMap 类似单列数据结构的Javascript实现,主要包括以下方法和属性

    1. length属性 得到所包含的数据项长度
    2. get(name[string],defaultValue[string])方法 获取项数据,如果值为空并且设置了默认值则返回默认值
    3. each(fn[function],scope[object])方法 遍历所有数据项
    4. eachKey(fn[function],scope[object])方法 遍历所有数据项名称
    5. put(name[string],value[object])方法 增加一项数据
    6. remove(o[object])方法 删除数据中的一项
    7. removeKey(name[string])方法 根据项名称来删除数据中的一项
    8. getCount()方法 获取所包含的数据项总数
    9. contains(o[object])方法 判断是否包含指定的数据项
    10. containsKey(name[string])方法 判断是否包含指定名称的数据项
    11. clear()方法 清空所有数据项
    12. first()方法 获取第一项数据
    13. last()方法 获取最后一项数据
    14. fillFormElements(form[domelement])方法,将对象包含的值填充到和项名称匹配的表单元素中
    15. toString(false|true) 方法 生成字符串,当参数为true时生成旧的格式字符串,当参数为false或不填时生成json语义的字符串
  2. 数据转换方式

    1. IDataset转字符串

      1. 简单数据结构输出结果(IDataset每个元素为IData)

        代码片段:

        //定义IDataset
        IDataset s1 = new DatasetList();
        //定义IData
        IData d1 = new DataMap();
        //加入元素
        d1.put("KEY11", "value11");
        d1.put("KEY12", "value12");
        d1.put("KEY13", "value13");
        //添加到IDataset中
        s1.add(d1);
        IData d2 = new DataMap();
        d2.put("KEY21", "value21");
        d2.put("KEY22", null);
        d2.put("KEY23", "value23");
        s1.add(d2);
        System.out.println(s1);
        

        输出结果:

        [{KEY11=["value11"], KEY12=["value12"], KEY13=["value13"]}, {KEY22=[""], KEY23=["value23"], KEY21=["value21"]}]
        

        说明:若对应的值为空,会自动转为""空字符串,每个元素的值通过=[..]来表示,若为数组,通过,号分隔

      2. 复杂数据结构输出结果(IData和IDataset相互嵌套)

        代码片段:

        IDataset s1 = new DatasetList();
        IData d1 = new DataMap();
        d1.put("KEY11", "value11");
        d1.put("KEY12", "value12");
        d1.put("KEY13", "value13");
        s1.add(d1);
        IData d2 = new DataMap();
        d2.put("KEY21", "value21");
        d2.put("KEY22", null);
        d2.put("KEY23", "value23");
        s1.add(d2);
        IDataset s2 = new DatasetList();
        s2.add(d2);
        IData d3 = new DataMap();
        d3.put("KEY31", "value31");
        d3.put("KEY32", "value32");
        d3.put("KEY33", "value33");
        //加入一个IData
        d2.put("DATA", d3);
        //加入一个IDataset
        s1.add(s2);
        System.out.println(s1);
        

        输出结果:

        [{KEY11=["value11"], KEY12=["value12"], KEY13=["value13"]}, {KEY22=[""], DATA=[{KEY33=["value33"]
        , KEY32=["value32"], KEY31=["value31"]}], KEY23=["value23"],KEY21=["value21"]}, "[{KEY22=[""], 
        DATA=["{KEY33=["value33"], KEY32=["value32"], KEY31=["value31"]}"], KEY23=["value23"], KEY21=["value21"]}]"]
        

        说明:IDataset和Data之间可以互相嵌套使用

    2. IData转字符串

      1. 简单数据结构输出结果(IDatas每个元素为非集合对象)

        代码片段:

        //定义IData
        IData d3 = new DataMap();
        d3.put("KEY31", "value31");
        d3.put("KEY32", "value32");
        d3.put("KEY33", "value33");
        System.out.println(d3);
        

        输出结果:

        {KEY33=["value33"], KEY32=["value32"], KEY31=["value31"]}
        

        说明:每个值通过[""]表示,若为值为数组通过["",""]表示

      2. 复杂数据结构输出结果(IData和IDataset相互嵌套)

        代码片段:

        IData d3 = new DataMap();
        d3.put("KEY31", "value31");
        d3.put("KEY32", "value32");
        d3.put("KEY33", "value33");
        IDataset s1 = new DatasetList();
        IData d1 = new DataMap();
        d1.put("KEY11", "value11");
        d1.put("KEY12", "value12");
        d1.put("KEY13", "value13");
        s1.add(d1);
        IData d2 = new DataMap();
        d2.put("KEY21", "value21");
        d2.put("KEY22", null);
        d2.put("KEY23", "value23");
        s1.add(d2);
        //加入IDataset,元素为IData对象
        d3.put("DATASET", s1);
        IData d4 = new DataMap();
        d4.put("KEY41", "value41");
        d4.put("KEY42", "value42");
        d4.put("KEY43", "value43");
        d4.put("DATA", d4);
        //加入IDataset,元素为String对象
        IDataset s2 = new DatasetList();
        s2.add("VALUE1");
        s2.add("VALUE2");
        s2.add("VALUE3");
        s2.add("VALUE4");
        d3.put("LIST", s2);
        System.out.println(d3);
        

        输出结果:

        {KEY33=["value33"], DATASET=[{KEY11=["value11"], KEY12=["value12"], KEY13=["valu
        e13"]}, {KEY22=[""], KEY23=["value23"], KEY21=["value21"]}], KEY32=["value32"],
        LIST=["VALUE1", "VALUE2", "VALUE3", "VALUE4"], KEY31=["value31"]}
        
    3. 字符串转IDataset

      String str = "{KEY33=["value33"], KEY32=["value32"], KEY31=["value31"]}";
      IData data = new DatasetList(str);
      

      注:
      1. 1、字符串与IData、IDataset对象灵活转换。
      2. 2、转换时不依赖于IData、IDataset的结构、可以无限层次嵌套。
      3. 3、若从字符串转换为IData、IDataset结构时,子嵌套的对象直接通过data.get("key"),dataset.get(0)获取,如果要获取子对象,需要强制转换,如:((IData) data.get("key")).get(0)
    4. JavaScript数据结构的使用

      //根据字符串来创建 DataMap对象
      var d4=new Wade.DataMap('{KEY33=["value33"], KEY32=["value32"], KEY31=["value31"]}');
      
      //获取对象中的数据项
      var v=d4.get('KEY33','defaultValue');
      
      //增加对象的数据项
      d4.put('KEY34','value34');
      
      //根据项名删除对象中的数据项
      d4.removeKey('KEY34');
      
      //遍历对象中的数据项
      d4.each(function(item,index,totalcount){
      	alert('共' +totalcount +'项,这是第' + (index+1) + '项,值为:' + item);
      });
      
      //将对象输出成字符串格式
      d4.toString();
      
      //根据字符串来创建 DatasetList对象
      var ds4=new Wade.DatasetList('[{KEY11=["value11"], KEY12=["value12"], KEY13=["value13"]}, {KEY22=[""], KEY23=["value23"], KEY21=["value21"]}]');
      
      //在这个例子中,DatasetList对象里嵌套了DataMap对象
      //根据行标删除多列数据集中的一列 
      ds4.removeAt(0);
      
      //增加多列数据集的列
      var newd=new Wade.DataMap();
      newd.put('KEY33','value33');
      newd.put('KEY43','value43');
      ds4.add(newd);
      
      //获取多列数据集中的一列
      ds4.get(0);
      
      //获取列中的项值 ds4.get(0,'KEY33')
      //直接删除多列数据集中的列数据 
      d4.remove(newd);
      
      //遍历多列数据集中的数据列
      ds4.each(function(item,index,totalcount){
      	alert('共' +totalcount +'列,这是第' + (index+1) + '列,输出为字符串是:' + item);
      });
      
      //输出多列数据集成字符串格式
      ds4.toString();