| 演示一: 通过定义 <Properties LazyLoad="true" ... >属性, 树杈从后端实时加载数据； 模拟场景: 所有树杈在展开(Expand)前并不知道是否有子孙节点，鼠标点击树杈时通过事件动态从服务器取数；

技术分析
1.OnReady事件：

    if(id=='AF1') {
     AF1.func("Build", "treelist/t2.xml \r\n lazyload=true; editAble=false"); //lazyload=true表示默认全部是树杈
     AF1.func("Load", "http://www.supcan.cn/DotNet/GetFin.aspx?format=byid");  //从后端加载树的第一层
    }

2.OnEvent事件：

    if(id == 'AF1' && Event == "LazyLoad") {
     var url = "http://www.supcan.cn/DotNet/GetFin.aspx?format=byid&kmdm=" + p2;
     //从URL加载数据，并插入表格中
     //因为format=byid, 所以不必指定插入的位置
     AF1.func("load", url + "\r\n fillmode=insert");
    }

3.这是类似的数据格式, 由后端的C#源码生成.

| 演示二: 数据格式采用treeformat=byPid, 且 LazyLoad 是一个表达式; 模拟场景: 可以通过表达式算得树杈的子孙行，所以不需要通过外部事件解决；

技术分析
1.该XML描述文件和前面的有轻微差别，差别在：

    //LazyLoad是表达式
    <Properties isTree="true" treeformat="byPid" lazyload="'http://www.supcan.cn/DotNet/GetFin.aspx?format=bypid&kmdm=' + id"  ...>
    ...
    //pid列是必需的，让其隐藏即可
    <Col name="pid" isHide="absHide" />
    //id列是必需的 (即kmdm)
    <Col name="id"  width="150">科目代码</Col>

2.这是类似的数据格式.

| 演示三: 数据格式采用treeformat=byData, XML模板中含有LazyLoad列; 模拟场景: 知道每行是否有子孙，取子孙的URL是在每行的“LazyLoad”数据列中.

技术分析
1.该XML描述文件和前面的有轻微差别，差别在：

    //LazyLoad是表达式
    <Properties isTree="true" treeformat="byData" ...>
    ...
    //含有固定的LazyLoad列，让其隐藏即可
    <Col name="LazyLoad" isHide="absHide" />

2.这是类似的数据格式，内含取得子孙的LazyLoad的URL.