<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>9.2 ExtJS: Форма.  Сложные (составные) элементы</title>
    <meta name="css" content="/doc/ext/ext_examples.css"/>
    <meta name="js" content="/js/EXT4/ext-all.js;/doc/ext/710.js"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="58"/>
    <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> / 9.2 ExtJS: Форма.  Сложные (составные) элементы</h1>
          <ol class="tags big">
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <div class="myContent"><h2>
   1. Листбокс <u class="external" title="ext/ext4/docs/index.html#/api/Ext.form.field.ComboBox">Ext.form.field.ComboBoxx</u>,
  type: combobox, combo
</h2>
<p>
  Листбокса в ExtJS нет. Вмсето него реализован громоздкий и
  сложный компонент в котором совмещены функции листбокса и поля
  текстового ввода, при наборе в котором происходит фильтрация
  заложенных в листбоксе данных типа гугловского Ajax Sugget. Он и
  создается при помощи <a href="/54.htm">хранилища</a>, которое
  ранее рассматривалось в примерах с таблицами. Предполагается что
  источник данных для него может быть каким угодно - и локальный и
  удаленный и при этом в любом формате (json, xml)<br/>
</p>
<div id="ex1"/>
<pre class="brush: js">
Ext.onReady(function(){   // отрабатывается по готовности DOM
    new Ext.form.ComboBox({
        renderTo: 'ex1',
        fieldLabel: 'Страна',
        store:  {            // конфигурация хранилища
                  fields: ['domen', 'name'],
                  data: [
                          {«domen»:«ru», «name»:«Россия»},
                          {«domen»:«ua», «name»:«Украина»},
                          {«domen»:«bf», «name»:«Буркино-Фасо«}
                          ]
                },
        displayField: 'name', // это текстовое значение &lt;option&gt;…&lt;/option&gt;
        valueField: 'domen'   // а это значение поля &lt;option value=»…»&gt;
    });
});

</pre>
<p>
  В документации дано большое количество <u class="external" title="docs.sencha.com/ext-js/4-0/#%21/example/form/combos.html">
  примеров</u> различных варианов работы этого копонента, включая
  преобразование его в очень мощный и полноценный <u class="external" title="docs.sencha.com/ext-js/4-0/#%21/example/form/forum-search.html">
  Ajax Suggest</u>
</p>
<h2>
   3. Чекбоксы <u class="external" title="ext/ext4/docs/index.html#/api/Ext.form.field.Checkbox">Checkbox</u>+<u class="external" title="docs.sencha.com/ext-js/4-0/#%21/api/Ext.form.FieldContainer">FieldContainer</u>
</h2>
<p>
  Чекбоксы по одиночке практически не встречаются, за исключением
  случая подтверждения ккой-нибудь оферты, которую все равно никто
  и никогда не читает. А для того чтобы создать группу чекбоксов
  нужно ииспользовать специальный контейнер FieldContainer. А в
  остальном код по-моему не должен вызвать каких-то вопросов:
</p>
<div id="ex3"/>
<pre class="brush: js">
     new Ext.form.FieldContainer({
            fieldLabel: 'Ваш заказ',
                    defaultType: 'checkboxfield', // дефолное значение xtype
                    items: [
                        {
                            xtype:  'checkboxfield', // если указан  defaultType, то не обязательно
                            boxLabel: 'Водка',
                            name: 'order',
                            inputValue: '1',
                            checked: true  // выбрано
                        }, {
                            boxLabel: 'Девочки',
                            name: 'order',
                            inputValue: '2'
                        }, {
                            boxLabel: 'Семечки',
                            name: 'order',
                            inputValue: '3'
                        }
                    ],
            renderTo: 'ex3'
    });
</pre>
<h2>
   4.RADIO <u class="external" title="docs.sencha.com/ext-js/4-0/#%21/api/Ext.form.field.Radio">
   Ext.form.field.Radio</u>
</h2>
<p>
  Код практически тот же что и у чекбоксов
</p>
<div id="ex4"/>
<pre class="brush: js">
   new Ext.form.FieldContainer({
            fieldLabel: 'Ваш заказ',
                   defaultType: 'radiofield', // дефолное значение xtype
                    items: [
                        {
                            boxLabel: 'Водка',
                            name: 'order2',
                            inputValue: '1',
                            checked: true,  // выбрано
                            id: 'radio1'
                         }
                         ……………………….
                         ……………………….
                    ],
            renderTo: 'ex4'
    });
</pre>
<h2>
  Далее
</h2>
<ol>
  <li>
    <a href="/59.htm">Form. Часть 3 - Submit</a>
  </li>
  <li>
    <a href="/60.htm">Деревья в ExtJS. Часть 1. Инициализация</a>
  </li>
</ol></div>
          <ol class="tags big">
            <li class="date">2011-12-04</li>
            <li>
              <a href="/ExtJS-4">ExtJS-4</a>
            </li>
          </ol>
          <ol class="see">
            <li>
              <a href="#"><span>docs.sencha.com/ext-js/4-0/#!/api</span> - <b>Form API на официальном сайте</b></a>
            </li>
            <li>
              <a href="#"><span>www.quizzpot.com/2009/10/ext-js-basic-forms-and-fields/</span> - <b>quizzpot.com ExtJS basic forms and fields</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>

