Skip to content

TreeGrid(树形表格)

扩展自$.fn.iDatagrid.defaults。使用$.fn.iTreegrid.defaults重写默认值对象。

树形表格用于显示分层数据表格。它是基于数据表格、组合树控件和可编辑表格。树形表格允许用户创建可定制的、异步展开行和显示在多列上的分层数据。

依赖关系

使用案例

使用HTML标签创建树形表格。在大多数情况下,树形表格遵循数据表格的结构。

html
<table id="tt" data-toggle="topjui-treegrid" style="width:600px;height:400px"
       data-options="url:'get_data.php',idField:'id',treeField:'name'">
    <thead>
        <tr>
            <th data-options="field:'name',width:180">Task Name</th>
            <th data-options="field:'persons',width:60,align:'right'">Persons</th>
            <th data-options="field:'begin',width:80">Begin Date</th>
            <th data-options="field:'end',width:80">End Date</th>
        </tr>
    </thead>
</table>

使用Javascript创建树形表格。

html
<table id="tt" style="width:600px;height:400px"></table>
javascript
$('#tt').iTreegrid({
    url:'get_data.php',
    idField:'id',
    treeField:'name',
    columns:[[
        {title:'Task Name',field:'name',width:180},
        {field:'persons',title:'Persons',width:60,align:'right'},
        {field:'begin',title:'Begin Date',width:80},
        {field:'end',title:'End Date',width:80}
    ]]
});

属性

树形表格扩展自datagrid(数据表格),树形表格新增的属性如下:

属性名属性值类型描述默认值
idFieldstring定义关键字段来标识树节点。(必须的)null
treeFieldstring定义树节点字段。(必须的)null
animateboolean定义在节点展开或折叠的时候是否显示动画效果。false
checkboxboolean,function定义在每一个节点前显示复选框,也可以指定一个函数来动态指定是否显示复选框,但函数返回true的时候则显示,否则不显示。见下方代码示例。false
cascadeCheckboolean定义是否级联检查。true
onlyLeafCheckboolean定义是否仅在叶子节点前显示复选框。false
linesboolean定义是否显示treegrid行。false
loaderfunction(param,success,error)定义以何种方式从远程服务器读取数据。返回false可以忽略该动作。该函数具有一下参数:param:传递到远程服务器的参数对象。success(data):当检索数据成功的时候调用的回调函数。error():当检索数据失败的时候调用的回调函数。json loader
loadFilterfunction(data,parentId)返回过滤后的数据进行展示。
expandRootsboolean是否在初始化时自动展开根节点true
expandAllboolean是否在初始化时自动展开所有节点(节点较多时不建议使用,会影响加载效率)false

事件

树形表格的事件扩展自datagrid(数据表格),树形表格新增的事件如下:

事件名事件参数描述
onClickRowrow在用户点击节点的时候触发。
onDblClickRowrow在用户双击节点的时候触发。
onClickCellfield,row在用户点击单元格的时候触发。
onDblClickCellfield,row在用户双击单元格的时候触发。
onBeforeLoadrow, param在请求数据加载之前触发,返回false可以取消加载动作。
onLoadSuccessrow, data数据加载完成之后触发。
onLoadErrorarguments数据加载失败的时候触发,参数和jQuery的$.ajax()函数的'error'回调函数一样。
onBeforeSelectrow在用户选择一行之前触发,返回false则取消该动作。
onSelectrow在用户选择的时候触发,返回false则取消该动作。
onBeforeUnselectrow在用户取消选择一行之前触发,返回false则取消该动作。
onUnselectrow在用户取消选择的时候触发,返回false则取消该动作。
onBeforeCheckNoderow,checked在用户选中一行节点之前触发,返回false则取消该动作。
onCheckNoderow,checked在用户选中一行节点的时候触发,返回false则取消该动作。
onBeforeExpandrow在节点展开之前触发,返回false可以取消展开节点的动作。
onExpandrow在节点被展开的时候触发。
onBeforeCollapserow在节点折叠之前触发,返回false可以取消折叠节点的动作。
onCollapserow在节点被折叠的时候触发。
onContextMenue, row在右键点击节点的时候触发。
onBeforeEditrow在用户开始编辑节点的时候触发。
onAfterEditrow,changes在用户完成编辑的时候触发。
onCancelEditrow在用户取消编辑节点的时候触发。

方法

很多方法都使用'id'命名参数,而'id'参数代表树节点的值。

方法名方法参数描述
optionsnone返回树形表格的属性。
resizeoptions设置树形表格大小,options包含2个属性:width:树形表格的新宽度。height:树形表格的新高度。
fixRowHeightid修正指定的行高。
loadparam读取并显示首页内容。见下方代码示例。
loadDatadata读取树形表格数据。
reloadid重新加载树形表格数据。如果'id'属性有值,将重新载入指定树形行,否则重新载入所有行。见下方代码示例。
reloadFooterfooter重新载入页脚数据。
getDatanone获取载入数据。
getFooterRowsnone获取页脚数据。
getRootnone获取根节点,返回节点对象。
getRootsnone获取所有根节点,返回节点数组。
getParentid获取父节点。
getChildrenid获取子节点。
getSelectednone获取选择的节点并返回它,如果没有节点被选中则返回null。
getSelectionsnone获取所有选择的节点。
getCheckedNodesnone获取所有选中的行。
getLevelid获取指定节点等级。
findid查找指定节点并返回节点数据。
selectid选择一个节点。
unselectid反选一个节点。
selectAllnone选择所有节点。
unselectAllnone反选所有节点。
checkNodeid选中指定行节点。
uncheckNodeid反选指定行节点。
collapseid折叠一个节点。
expandid展开一个节点。
collapseAllid折叠所有节点。
expandAllid展开所有节点。
expandToid打开从根节点到指定节点之间的所有节点。
toggleid节点展开/折叠状态触发器。
appendparam追加节点到一个父节点,'param'参数包含如下属性:parent:父节点ID,如果未指定则追加到根节点。data:数组,节点数据。见下方代码示例。
insertparam插入一个新节点到指定节点。'param'参数包含一下参数:before:插入指定节点ID值之前。after:插入指定节点ID值之后。data:新节点数据。见下方代码示例。
removeid移除一个节点和他的所有子节点。
popid弹出并返回节点数据以及它的子节点之后删除。
refreshid刷新指定节点。
updateparam更新指定节点。'param'参数包含以下属性:id:要更新的节点的ID。row:新的行数据。见下方代码示例。
beginEditid开始编辑一个节点。
endEditid结束编辑一个节点。
cancelEditid取消编辑一个节点。
getEditorsid获取指定行编辑器。每个编辑器都包含以下属性:actions:编辑器执行的动作。target:目标编辑器的jQuery对象。field:字段名称。type:编辑器类型。
getEditorparam获取指定编辑器,'param'参数包含2个属性:id:行节点ID。field:字段名称。
showLinesnone显示treegrid行。

属性代码示例

checkbox属性示例:

javascript
$('#tg').iTreegrid({
    checkbox: function(row){
        var names = ['Java','eclipse.exe','eclipse.ini'];
        if ($.inArray(row.name, names)>=0){
            return true;
        }
    }
})

方法代码示例

load方法示例:

javascript
// 读取并发送请求参数
$('#tg').iTreegrid('load', {
    q: 'abc',
    name: 'name1'
});

reload方法示例:

javascript
$('#tt').iTreegrid('reload', 2);	// 重新载入值为2的行
$('#tt').iTreegrid('reload');	// 重新载入所有行

append方法示例:

javascript
// 追加若干节点到选中节点的后面
var node = $('#tt').iTreegrid('getSelected');
$('#tt').iTreegrid('append',{
    parent: node.id,  // the node has a 'id' value that defined through 'idField' property
    data: [{
        id: '073',
        name: 'name73'
    }]
});

insert方法示例:

javascript
// 插入一个新节点到选择的节点之前
var node = $('#tt').iTreegrid('getSelected');
if (node){
    $('#tt').iTreegrid('insert', {
        before: node.id,
        data: {
            id: 38,
            name: 'name38'
        }
    });
}

update方法示例:

javascript
$('#tt').iTreegrid('update',{
    id: 2,
    row: {
        name: '新名称',
        iconCls: 'icon-save'
    }
});

基于最新稳定版jQuery EasyUI构建的前端框架