Jqgrid 解析数据的性能。要做到这一点,您需要用echo(“\n”)替换第一行strarting。。。对于一个符号,[。每一行应该看起来像{“id”:“{$id}”,“topic”:“{$topic}”,“url”:“{$url}”,“level”:“{$dep}”

Jqgrid 解析数据的性能。要做到这一点,您需要用echo(“\n”)替换第一行strarting。。。对于一个符号,[。每一行应该看起来像{“id”:“{$id}”,“topic”:“{$topic}”,“url”:“{$url}”,“level”:“{$dep}”,jqgrid,free-jqgrid,Jqgrid,Free Jqgrid,解析数据的性能。要做到这一点,您需要用echo(“\n”)替换第一行strarting。。。对于一个符号,[。每一行应该看起来像{“id”:“{$id}”,“topic”:“{$topic}”,“url”:“{$url}”,“level”:“{$dep}”,“lft”:“{$lft}”,,,}@Chance:您只需按名称填写所有属性,您需要显示TreeGrid plus级别,lft,rgt,isLeaf,扩展的。您可以在中验证测试JSON数据的正确性。您需要将数据类型:“xml”替换为数据类型:

解析数据的性能。要做到这一点,您需要用
echo(“\n”)替换第一行strarting。。。对于一个符号,
[
。每一行应该看起来像
{“id”:“{$id}”,“topic”:“{$topic}”,“url”:“{$url}”,“level”:“{$dep}”,“lft”:“{$lft}”,,,}
@Chance:您只需按名称填写所有属性,您需要显示TreeGrid plus
级别
lft
rgt
isLeaf
扩展的
。您可以在中验证测试JSON数据的正确性。您需要将
数据类型:“xml”
替换为
数据类型:“JSON”
也可以。或者,您可以提供一些返回服务器的测试XML数据,我将帮助您添加
xmlmap
属性来读取数据。建议使用JSON,但也支持XML。当然速度较慢,但它可以使用相应的选项。
// force a node (if expandable) to stay expanded
function forceNodeOpen(rowid)
{
    var record = $("#tree").jqGrid('getRowData', rowid);
    var div = $('tr#'+rowid).find('div.ui-icon.treeclick');
    div.removeClass('ui-icon-triangle-1-e tree-plus').addClass('ui-icon-triangle-1-s tree-minus');
    **$('#tree').jqGrid('expandNode', record);**    
    **$('#tree').jqGrid('expandRow', record);**

    // get all ancestoral parents and expand them
    // *NOTE*: the getAncestorNodes function of grid was not usable for 
    //         some reason as the same code below just would not work 
    //         with the return array from getAncestorNodes
    var parent = $("#tree").jqGrid('getNodeParent', record);
    while(parent)
    {
        forceNodeOpen(parent['id']);
        parent = $("#tree").jqGrid('getNodeParent', parent);
    }
}

// using topic url, get the tree row id
function getTopicID(topic)
{
    var nodes = $('#tree').jqGrid('getRowData');
    var rowid = 1;
    $.each(nodes, function(e,i)
    {
        var url = $(this).attr('url');
        if(url == topic)
        {
            rowid = $(this).attr('id');
            return false;
        }
    });

    return rowid;
}

// post request to help server via ajax
function loadTopic(topic)
{
    // no need to load again
    if(loadedtopic == topic) { return false; }

    // select the topic node
    var rowid = getTopicID(topic);
    loading = true;
    $('#tree').jqGrid('setSelection', rowid);
    forceNodeOpen(rowid);
    loading = false;

    // wipe content
    $('h1#help_content_topic span:first').html('Loading...');
    $('div#help_content').html('');

    // block UI for ajax posting
    blockInterface();

    // request help content
    $.ajax(
    {
        type: 'POST', 
        url: '/index.php',
        data: { 'isajax': 1, 'topic': topic },
        success: function(data)
        { 
            $.unblockUI();
            $('h1#help_content_topic span:first').html(data['topic']);
            $('div#help_content').html(data['content']);
            return false;
        }
    });

    // save current topic to prevent loading same topic again
    loadedtopic = topic;
}

// table of contents
$('#tree').jqGrid({
    url: "topics.php",
    datatype: "xml",
    autowidth: true,
    caption: "Help Topics",
    colNames: ["id","","url"],
    colModel: [
        {name: "id",width:1,hidden:true, key:true},
        {name: "topic", width:150, resizable: false, sortable:false},
        {name: "url",width:1,hidden:true}
    ],
    ExpandColClick: true,
    ExpandColumn: 'topic',
    gridview: false,
    height: 'auto',
    hidegrid: false,
    pager: false,
    rowNum: 200,
    treeGrid: true,
    treeIcons: {leaf:'ui-icon-document-b'},

    // auto-select topic node
    gridComplete: function()
    {
        // save current topic to prevent loading same topic again
        loadedtopic = '<? echo($topic) ?>';
        var rowid = getTopicID('<? echo($topic) ?>');
        $('#tree').jqGrid('setSelection', rowid);
        forceNodeOpen(rowid);
        $.unblockUI();
    },

    // clear initial loading
    loadComplete: function()
    {
        loading = false;
    },

    onSelectRow: function(rowid)
    {
        // ignore initial page loads
        if(loading) { return false; }

        // load the selected topic
        var topic = $("#tree").jqGrid('getCell',rowid,'url');
        loadTopic(topic);
    }
});
expandNode: function (rc) { 
...
if (p.treedatatype !== "local" && !base.isNodeLoaded.call($($t), p.data[p._index[id]]) && !$t.grid.hDiv.loading) {
// set the value which will be used during processing of the server response
// in readInput
p.treeANode = rc1.rowIndex;
p.datatype = p.treedatatype;
...});
echo("<?xml version='1.0' encoding='UTF-8'?>\n");

require('db.php');

echo("<rows>\n");
echo("<page>1</page>\n");
echo("<total>1</total>\n");
echo("<records>1</records>\n");

$sql = "SELECT node.id, node.parentid, node.topic, node.url, node.lft, node.rgt, (COUNT(node.parentid) - 1) AS depth 
            FROM helptopics AS node, helptopics AS parent 
                WHERE node.lft BETWEEN parent.lft AND parent.rgt
                    GROUP BY node.url ORDER BY node.lft";
$stmt = AMDB::selectStatement($sql);
while($data = $stmt->fetch(PDO::FETCH_ASSOC))
{
    $id = $data['id'];
    $pid = $data['parentid'];
    $topic = $data['topic'];
    $url = $data['url'];
    $lft = $data['lft'];
    $rgt = $data['rgt'];
    $leaf = $rgt - $lft == 1 ? 'true' : 'false';
    $exp = 'false';
    $dep = $data['depth'];

    echo("<row><cell>{$id}</cell><cell>{$topic}</cell><cell>{$url}</cell><cell>{$dep}</cell><cell>{$lft}</cell><cell>{$rgt}</cell><cell>{$leaf}</cell><cell>{$exp}</cell></row>\n");
}

echo("</rows>\n");
exit();