<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>10.1 Деревья в ExtJS. Инициализация</title>
    <meta name="css" content="/doc/ext/ext_examples.css"/>
    <meta name="js" content="/js/EXT4/ext-all.js;/doc/ext/800.js"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="60"/>
    <link rel="stylesheet" type="text/css" href="/doc/ext/ext_examples.css"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
  </head>
  <body>
    <div class="main">
      <div class="wrap">
        <div class="L">
          <h1><a href="/">..</a> / 10.1 Деревья в ExtJS. Инициализация</h1>
          <ol class="tags big">
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <div class="myContent"><h2>
   1. Дерево со статическими данными
</h2>
<p>
  Самый простой пример дерева - дерево, в котором данные берутся из
  статического объекта, описывающего древовидную структуру. Ниже
  приведен пример.
</p>
<pre class="brush: js">
    var data1={                                                  // корневой элемент
                        text: 'Root',                           // текст корневого элемента
                        expanded: true,                         // указание на то что узел развернут
                        children: [                                     // массив дочерних элементов    
                                { text: 'Child 1', // имя элемента
                  leaf: true},                  // указание на то, что дочерних элементов нет   
                                {text: 'Child 2',leaf: true},
                                {text: 'Child 3',expanded: true,
                                        children: [{text: 'Child 31',leaf: true}]}
                   ]
                } Ext.create('Ext.tree.Panel', {  // создание панели с деревом
        rootVisible: false,             // спрятать корневой узел
                renderTo: 'ex1', // рендерить в #ex1
                title: 'Simple Tree',           // заголовок панели
                root: data1                                     // источник данных
        });
</pre>
<div id="ex1"/>
<p>
  Еще один вариант простого статического дерева. Если в предыдущем
  примере в качестве источника данных выступал статический массив,
  здесь появляется дополнительная прослойка - хранилище (Storage).
  Может быть этот пример покажется лишним, но от него можно очень
  плавно перейти к слеующему примеру - загрузке данных для дерева с
  сервера.
</p>
<pre class="brush: js">
 var data2={ // структура данных та же что и в примере выше.
                          ……..
                    }   
var store2 = Ext.create('Ext.data.TreeStore', 
  {root: data2   // создается хранилище данных, взятых из data2
  }); Ext.create('Ext.tree.Panel', {
        rootVisible: false,             // спрятать корневой узел
        store: store2,  // указывается хранилище данных
        title: 'Simple Tree var2',
        renderTo: 'ex2',
        height: 200
    }); 

</pre>
<div id="ex2"/>
<h2>
   2. Дерево c данными подгружаемыми по Ajax
</h2>
<p>
  Отличие этого примера от прдедыдущего в том, что хранилище
  настроено на прием данных с сервера.<br/>
  На стороне сервера скрипт tree.php выдает json объект с такой же
  структурой данных, как было указано рассмотрено выше.
</p>
<pre class="brush: js">
   var store3 = Ext.create('Ext.data.TreeStore', {
        proxy: {                        // указание типа и  источника данных 
            type: 'ajax',   //  тип данных - ajax
            url: 'tree.php' //  урл источника данных 
        } 
    }); Ext.create('Ext.tree.Panel', {
        store: store3,
        rootVisible: true,
        title: 'Ajax Tree',
        renderTo: 'ex3',
        height: 200
    });
</pre>
<div id="ex3"/>
<h3>
   3. treeGrid
</h3>
<p>
  treeGrid - комбинация дерева и таблички<br/>
  Так же как и в табличке в treeGrid необходимо определить поля для
  таблицы:
</p>
<pre class="brush: js">
var cols=[{
        xtype: 'treecolumn', // тип поля - табличка!!!
        text: 'Name',            // текстовое название поля     
                dataIndex: 'name'},  // индекс поля
                {text: 'Description',dataIndex: 'description'},
                {text: 'Owner',dataIndex: 'owner'} 
                ];
var fields= ['name', 'description','owner']; // порядок отображения полей
</pre>
<p>
  Дальше все то же самое, за исключением данных. В них указываются
  те же поля что и в fields
</p>
<pre class="brush: js">
 Ext.create('Ext.tree.Panel', {
    renderTo: 'ex5',
        id:'tree',
        autoscroll:true,
    title: 'TreeGrid',
    height: 150,
    fields: fields,
    columns: cols,
    root: {
        name: 'Root',
        description: 'Root description',
        owner: 'Root owner',
        expanded: true,
        children: [{
            name: 'Child 1',description: 'Description 1',owner: 'owner 1', 
            leaf: true
        }, {
            name: 'Child 2',description: 'Description 2',owner: 'owner 2',
            leaf: true
        }] 
    } 
        
</pre>
<div id="ex5"/>
<h2>
  Далее
</h2>
<ol>
  <li>
    <a href="/61.htm">Деревья в ExtJS. Часть 2. Drag &amp; Drop /
    Навигация / Манипуляции c узлами</a>
  </li>
  <li>
    <a href="/62.htm">Навигация по DOM. Часть 1</a>
  </li>
  <li>
    <a href="/63.htm">Навигация по DOM. Часть 2</a>
  </li>
  <li>
    <a href="/64.htm">Манипуляции с DOM. Часть 1. Установка/чтение
    стилей, классов, атрибутов</a>
  </li>
  <li>
    <a href="/65.htm">Манипуляции с DOM. Часть 2.
    Добавление/удаление и пр. операции с узлами</a>
  </li>
</ol></div>
          <ol class="tags big">
            <li class="date">2011-12-11</li>
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <ol class="see">
            <li>
              <a href="#"><span>stackoverflow.com/questions/4791729/extjs-custom-column-renderer-on-treegrid-isnt-being-fired</span> - <b>ExtJS — Custom Column Renderer on TreeGrid isn´t being fired</b></a>
            </li>
            <li>
              <a href="#"><span>www.sencha.com/learn/ext-js-trees/</span> - <b>www.sencha.com: The Tree Component.  Ext JS, 4.x. Guide</b></a>
            </li>
          </ol>
          <ul class="comment"/>
        </div>
      </div>
      <div class="R">
        <a href="/" title="&#x41D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x443;&#x44E;"/>
      </div>
    </div>
    <div id="li"/>
  </body>
</html>

