简体   繁体   English

extjs 4:仅按特定ID显示树面板节点

[英]extjs 4 : only display the tree panel node by the specific id

MySQL DATABASE: MySQL数据库:

CREATE DATABASE `tree`;

DROP TABLE IF EXISTS `mytree`;
CREATE TABLE `mytree` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'node_id',
  `text` varchar(20) NOT NULL COMMENT 'node_name',
  `parent_id` int(11) NOT NULL,
  `leaf` varchar(5) NOT NULL COMMENT 'true/false',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=latin1;

INSERT INTO `mytree` VALUES (36,'Folder 1',0,'false'),
(38,'Folder 2',0,'false'),(42,'Text 1',36,'true'),
(43,'Folder 3',0,'false'),(44,'Text 2',36,'true'),
(52,'Text 6',38,'true'),(57,'Text 5',38,'true'),
(58,'Text 4',38,'true'),(73,'Subfolder 1',36,'false'),
(74,'Text 7',73,'true'),(75,'Text 10',73,'true'),
(76,'Text 9',73,'true'); 

tree.php tree.php

<?php
mysql_connect("localhost", "root", "") or die("Could not connect");
mysql_select_db("tree") or die("Could not select database");

$parent_id = $_GET['node'];
$id = $_GET['id'];
    // 1) Remove false as checked
    $query = "SELECT id, text,parent_id, leaf FROM mytree WHERE parent_id='".$parent_id."' ORDER BY text ASC";
    $rs = mysql_query($query);
    $arr = array();
    while($obj = mysql_fetch_object($rs)) {

      // 2) If no leaf then destroy the attribute
      if($obj->leaf != "false"){
         // 1) set checked attribute with an boolean value 
         $obj->checked = false;       
      }
     $arr[] = $obj;
    }
    echo json_encode($arr);
?>

script: 脚本:

Ext.onReady(function() {
    var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
    type: 'ajax',
    url: 'tree.php',
    extraParams :{id:'38,43'},
    // Here Magic comes
    actionMethods: {
      create : 'GET',
      read   : 'GET',
      update : 'GET',
      destroy: 'GET'
    }
        },
        sorters: [{
            property: 'leaf',
            direction: 'ASC'
        }, {
            property: 'text',
            direction: 'ASC'
        }]
    });

Question: 题:

1)i just want to show the tree panel root where id 38 and 43 only.if we changing the code inside .php , when clicked the tree panel the tree are cannot expand the data.so,i dont think so we changing the code in php script?how to just display the data i want in the tree panel? 1)我只想显示树面板根仅在id 38和43处。如果我们在.php中更改代码,则单击树面板时树无法扩展数据。所以,我不认为因此我们在更改代码在PHP脚本?如何只显示我想要的数据在树面板? P/S:passing parameters of id are flexible, not only 38 and 43. P / S:id的传递参数非常灵活,不仅38和43。

I think this will work for what you want: 我认为这将满足您的需求:

   <?php
    mysql_connect("localhost", "root", "") or die("Could not connect");
    mysql_select_db("tree") or die("Could not select database");

    $parent_id = $_GET['node'];
    $id = $_GET['id'];
    // 1) Remove false as checked
    $query = "SELECT id, text,parent_id, leaf FROM mytree WHERE parent_id='".$parent_id."' ";
    if($parent_id == 0)
        $query = $query."AND id IN (".$id.") ";
    $query = $query."ORDER BY text ASC";
    $rs = mysql_query($query);
    $arr = array();
    while($obj = mysql_fetch_object($rs)) {

      // 2) If no leaf then destroy the attribute
      if($obj->leaf != "false"){
         // 1) set checked attribute with an boolean value 
         $obj->checked = false;       
      }
     $arr[] = $obj;
    }
    echo json_encode($arr);
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM