|
Пример использования treegrid с динамической подгрузкой данных.
Для создания таблицы с деревом необходимо:
1. Настроить treegrid на стороне клиента;
2. Установить свойство $this->treegrid = 'adjacency' внутри метода init.
3. В функции parseRow вручную задать значения колонок level, parent, isLeaf,
expanded.
4. Дополнить SQL-запрос таким образом, чтобы за раз он выбирал только один уровень.
Разумеется, вы можете использовать любые другие модели treegrid, а также загружать все дерево сразу целиком.
Просто модифицируйте вывод таким образом, как вам удобно.
higrid.net嗨网提供电子表格、在线图形等互联网开发及运营技术,提供相关资料及软件下载,分享奇趣网络时事评论!欢迎访问。
部分内容为俄文,higrid计划翻译一下。敬请期待!
php代码和js代码请点击tab查看。
<?php
class jqOutTree extends jqGrid
{
protected $do_count = false;
protected function init()
{
#Set tree grid mode
$this->treegrid = 'adjacency';
#Set database table
$this->table = 'tbl_tree';
$this->level = intval($this->input('n_level', 0));
$this->parent_id = intval($this->input('nodeid', 0));
$this->query = "
SELECT {fields}
FROM tbl_tree t
WHERE {where} AND t.parent_id='{$this->parent_id}'
";
#Set columns
$this->cols = array(
'id' => array('label' => 'ID',
'db' => 't.id',
'width' => 8,
'align' => 'center',
),
'parent_id' => array('hidden' => true,
'db' => 't.parent_id',
),
'node_name' => array('label' => 'Node name',
'db' => 't.node_name',
'width' => 55,
),
'price' => array('label' => 'Price',
'db' => 't.price',
'width' => 15,
),
'has_child' => array('hidden' => true,
//do we have any children?
'db' => '(SELECT id FROM tbl_tree WHERE parent_id=t.id LIMIT 1)',
),
);
}
protected function parseRow($r)
{
#Fields required to build tree grid
$r['level'] = $this->input('nodeid') ? ($this->level + 1) : 0;
$r['parent'] = $r['parent_id'];
$r['isLeaf'] = $r['has_child'] ? false : true;
$r['expanded'] = false;
return $r;
}
}
<script>
var opts = {
'treeGrid':true,
'treeGridModel':'adjacency',
'ExpandColumn':'node_name',
'viewrecords':false
};
<?= $rendered_grid ?>
</script>
|