<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.3.2" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>extjs примеры, решения, документация...</title>
	<link>http://extjs.indoweblog.com</link>
	<description />
	<pubDate>Tue, 22 Apr 2008 08:33:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Extjs" type="application/rss+xml" /><item>
		<title>Дополнительные кнопки Extjs button на форме</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/275252701/23</link>
		<comments>http://extjs.indoweblog.com/archives/23#comments</comments>
		<pubDate>Tue, 22 Apr 2008 08:33:34 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/23</guid>
		<description><![CDATA[
Итак. У нас есть extjs form.  Обычная такая форма с кнопками save которас сабмитит форму и reset которая ее очищает.  И тут нам значит присписило прикрутить на форму еще одну кнопку. Ну к примеру для проверки какой-то. Вот как на картинке. Кнопка используется для проверки xml rpc сервиса. Вот и разберем на этом [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://extjs.indoweblog.com/files/2008/04/extjs_button.jpg" alt="extjs Button" /></p>
<p>Итак. У нас есть extjs form.  Обычная такая форма с кнопками save которас сабмитит форму и reset которая ее очищает.  И тут нам значит присписило прикрутить на форму еще одну кнопку. Ну к примеру для проверки какой-то. Вот как на картинке. Кнопка используется для проверки xml rpc сервиса. Вот и разберем на этом прмере как эта кнопка работает.</p>
<p>extjs штука неплохая, и позволяет более0менее малой кровью делать в интерфейсе вещи, которые  ранее были доступны лишь десктопным приложениям. Итак наша кнопка. По ее нажатию, скрипт должен собрать с формы введенные значения из некороых полей, потом собрать на ихоснове запрос, послать его на сервер и показать нам ответ. Причем как самой extjs формы , так и страницы в целом эта  функция касаться не доложна.</p>
<p>Создаем extjs form и добавляем туда необходимые нам поля:<br />
<code><br />
form1Form =  new Ext.FormPanel<br />
({"title":"Настройки сайта","labelAlign":"right","labelWidth":150,"width":500,"waitMsgTarget":true,"monitorValid":true}<br />
);<br />
form1set4rpcurlTextField =  new Ext.form.Field<br />
({"fieldLabel":"URL сервиса","name":"xmlrpc_url","width":200,"maxLength":255,"allowBlank":true,"xtype":"textfield"}<br />
);</code><br />
<code><br />
form1set4rpcloginTextField =  new Ext.form.Field<br />
({"fieldLabel":"Логин","name":"xmlrpc_login","width":200,"maxLength":25,"allowBlank":true,"xtype":"textfield"}<br />
);</code></p>
<p>form1set4rpcpasswordTextField =  new Ext.form.Field<br />
({&#8221;fieldLabel&#8221;:&#8221;Пароль&#8221;,&#8221;name&#8221;:&#8221;xmlrpc_password&#8221;,&#8221;width&#8221;:200,&#8221;maxLength&#8221;:25,&#8221;allowBlank&#8221;:true,&#8221;xtype&#8221;:&#8221;textfield&#8221;}<br />
);</p>
<p>form1set4rpcidTextField =  new Ext.form.Field<br />
({&#8221;fieldLabel&#8221;:&#8221;ID&#8221;,&#8221;name&#8221;:&#8221;xmlrpc_id&#8221;,&#8221;width&#8221;:200,&#8221;maxLength&#8221;:25,&#8221;allowBlank&#8221;:true,&#8221;xtype&#8221;:&#8221;textfield&#8221;}<br />
);<br />
form1set4Fieldset =  new Ext.form.FieldSet<br />
({&#8221;title&#8221;:&#8221;Xml Rpc&#8221;,&#8221;autoHeight&#8221;:true,&#8221;defaultType&#8221;:&#8221;textfield&#8221;}<br />
);<br />
form1set4Fieldset.add(form1set4rpcurlTextField);<br />
form1set4Fieldset.add(form1set4rpcloginTextField);<br />
form1set4Fieldset.add(form1set4rpcpasswordTextField);<br />
form1set4Fieldset.add(form1set4rpcidTextField);<br />
form1Form.add(form1set4Fieldset);</p>
<p>Вот мы имеем часть формы с полями. Теперь создадим кнопку  и тоже добавим ее на форму:<br />
<code><br />
form1set4rpcbuttonButton =  new Ext.Button<br />
({"text":"Проверить список"}<br />
);<br />
form1set4Fieldset.add(form1set4rpcbuttonButton);<br />
</code><br />
Затем опишем поведение нашей кнопки.  По нажатию на нее мы собираем в кучку значения из некоторых полей формы и на их основе создаем запрос на сервер. А потом в  Ext.Msg.alert показываем ответ:</p>
<p><code><br />
form1set4rpcbuttonButton .on('click',<br />
function (e)<br />
{<br />
var url = form1set4rpcurlTextField.getValue();<br />
var login = form1set4rpcloginTextField.getValue();<br />
var password = form1set4rpcpasswordTextField.getValue();</code></p>
<p>var conn = new Ext.data.Connection();<br />
conn.request({<br />
url: &#8216;http://&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;/testrpc/&#8217;,<br />
method: &#8216;POST&#8217;,<br />
params: {&#8221;url&#8221;: url,&#8221;login&#8221;: login,&#8221;password&#8221;: password},<br />
success: function(responseObject) {<br />
Ext.Msg.show({<br />
title:&#8217;Status&#8217;,<br />
msg: responseObject.responseText,<br />
buttons: Ext.Msg.OK,<br />
minWidth: 500,<br />
});<br />
//                    Ext.Msg.alert(&#8217;Status&#8217;, responseObject.responseText);<br />
},<br />
failure: function(responseObject) {<br />
Ext.Msg.alert(&#8217;Status&#8217;, &#8216;Connect to server lost.<br />
&#8216;+responseObject.responseText);<br />
}<br />
});<br />
}<br />
);</p>
<p>Вот и все.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/23/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/23</feedburner:origLink></item>
		<item>
		<title>Extjs, javascript,  ajax,  htmlupdater, или правильная перезагрузка страницы</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/254776808/20</link>
		<comments>http://extjs.indoweblog.com/archives/20#comments</comments>
		<pubDate>Thu, 20 Mar 2008 08:19:45 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/20</guid>
		<description><![CDATA[
Javascript и ссылки на страницы.  Использование javascript для перехода по ссылкам внутри сайта. это всегда головная боль. Поисковые боты очень не любят такие вещи, да и проблема создания закладок на такие страницы тоже актуальна. Современные веяния в вебе, увы, заставляют использовать ajax перезагрузку страниц. Во-первых это модно, а во-вторых, в некоторых случаях, как с extjs [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://extjs.indoweblog.com/files/2008/03/javascript_pages.jpg" alt="javascript_pages.jpg" /></p>
<p>Javascript и ссылки на страницы.  Использование javascript для перехода по ссылкам внутри сайта. это всегда головная боль. Поисковые боты очень не любят такие вещи, да и проблема создания закладок на такие страницы тоже актуальна. Современные веяния в вебе, увы, заставляют использовать ajax перезагрузку страниц. Во-первых это модно, а во-вторых, в некоторых случаях, как с extjs приложениями, просто не остается других вариантов. Htmlupdater - единственное лекарство от перезагрузки пары сотен килобайт CSS и javascript файлов самого extjs.</p>
<p>Вот пример, реализации javasctipt обертки на extjs для обработки ссылки на страницу. В самой ссылке пишем:</p>
<pre>&lt;a href=\"\/url\/\" onClick=\"tabReload('\/url\/?_update=1') ;return false;\"&gt;javascript страницы&lt;\/a&gt;</pre>
<p>А собственно javascript функция выглядит так:</p>
<pre><strong>f</strong><strong>unction</strong> tabReload(url)
  {
  <strong>var</strong> tmp = Ext.get(&#8221;<strong>content</strong>&#8220;);
  <strong>var </strong>updater = tmp.getUpdateManager();
  updater.setDefaultUrl(url);
  updater.loadScripts =true;
  updater.refresh();
  <strong>return </strong>false;
  }</pre>
<p>Как это работает? Очень просто. При нажатии на ссылку левой кнопкой, срабатывает javascript , а при нажатии средней - просто переход по ссылке.  Параметр _update который передасется на серер нужно обрабатывать, и при его наличии отдавать не всю страницу целиком, а только контентную область.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/20/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/20</feedburner:origLink></item>
		<item>
		<title>Полезные регулярные выражения  - проверка email.</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/253477198/19</link>
		<comments>http://extjs.indoweblog.com/archives/19#comments</comments>
		<pubDate>Tue, 18 Mar 2008 07:07:08 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/19</guid>
		<description><![CDATA[Проверка правильности заполнения форм предполагает кроме всего прочего использование регулярных выражений.
Вот небольшая подборка полезных регулярных выражений, которые можно использовать как в javascript, так и в серверных конструкциях вроде preg_match или regex .  Так сказать регулярные выражения на кахдый день.
Регулярное выраженгие для проверки email адреса (переводы строк нужно убрать):
^((?&#62;[a-zA-Z\d!#$%&#38;&#8217;*+\-/=?^_`{&#124;}~]+\x20*&#124;&#8221;((?=[\x01-\x7f])[^&#8221;\\]&#124;\\[\x01-\x7f])*&#8221;\
x20*)*(?&#60;angle&#62;&#60;))?((?!\.)(?&#62;\.?[a-zA-Z\d!#$%&#38;&#8217;*+\-/=?^_`{&#124;}~]+)+&#124;&#8221;((?=[\x01-\x7f])[^&#8221;\\]&#124;
\\[\x01-\x7f])*&#8221;)@(((?!-)[a-zA-Z\d\-]+(?&#60;!-)\.)+[a-zA-Z]{2,}&#124;\[(((?(?&#60;!\[)\.)(25[0-5]&#124;2[0-4]\d&#124;
[01]?\d?\d)){4}&#124;[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]&#124;\\[\x01-\x7f])+)\])(?(angle)&#62;)$
Конечно это не полный стандарт RFC 2822, [...]]]></description>
			<content:encoded><![CDATA[<p>Проверка правильности заполнения форм предполагает кроме всего прочего использование регулярных выражений.</p>
<p>Вот небольшая подборка полезных регулярных выражений, которые можно использовать как в javascript, так и в серверных конструкциях вроде preg_match или regex .  Так сказать регулярные выражения на кахдый день.</p>
<p>Регулярное выраженгие для проверки email адреса (переводы строк нужно убрать):</p>
<p><strong><font color="#0000ff">^((?&gt;[a-zA-Z\d!#$%&amp;&#8217;*+\-/=?^_`{|}~]+\x20*|&#8221;((?=[\x01-\x7f])[^&#8221;\\]|\\[\x01-\x7f])*&#8221;\<br />
x20*)*(?&lt;angle&gt;&lt;))?((?!\.)(?&gt;\.?[a-zA-Z\d!#$%&amp;&#8217;*+\-/=?^_`{|}~]+)+|&#8221;((?=[\x01-\x7f])[^&#8221;\\]|<br />
\\[\x01-\x7f])*&#8221;)@(((?!-)[a-zA-Z\d\-]+(?&lt;!-)\.)+[a-zA-Z]{2,}|\[(((?(?&lt;!\[)\.)(25[0-5]|2[0-4]\d|<br />
[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)&gt;)$</font></strong></p>
<p>Конечно это не полный стандарт RFC 2822, но для большинства случаев такое регулярное выражение в PHP или JS скрипте вполне подойдет.  И уж точно лучше, чем конструкции вроде ^[\n &amp;lt;&amp;quot;&#8217;]*([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+) которые используются обычно.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/19/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/19</feedburner:origLink></item>
		<item>
		<title>Extjs tree управление загрузкой.</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/250056202/17</link>
		<comments>http://extjs.indoweblog.com/archives/17#comments</comments>
		<pubDate>Wed, 12 Mar 2008 10:58:48 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/17</guid>
		<description><![CDATA[
Как бы это не звучало странным, но класс tree  в принципе никак не может управлять загрузкой дерева. Он показывает все, что загрузил treeLoader.  Так все просто! скажете вы. TreeLoader и управляет загрузкой дерева. А вот и нет.  TreeLoader просто загружает в tree те данные, что выплюнул сервер. Управлением загрузкой данных в extjs treepanel занимается сервер. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://extjs.indoweblog.com/files/2008/03/extjs_tree.jpg" alt="extjs tree" /></p>
<p>Как бы это не звучало странным, но класс tree  в принципе никак не может управлять загрузкой дерева. Он показывает все, что загрузил treeLoader.  Так все просто! скажете вы. TreeLoader и управляет загрузкой дерева. А вот и нет.  TreeLoader просто загружает в tree те данные, что выплюнул сервер. Управлением загрузкой данных в extjs treepanel занимается сервер. Это немного неочевидно,  за то очень удобно.  TreeLoader загружает все, что отдал сервер, будь то полное дерево, или только один из его уровней, а treePanel умеет при необходимости ( при отсутствии в дереве соответствующей ветки) попросить TreeLoader забрать с сервера необходимый кусок данных. Причем сервер может вернуть не только запрашиваемый уровень но и  произвольное количество вложенности.</p>
<p>Это очень удобно.  Обычно дерево на сервере собирается из базы данных при помощи какой-либо рекурсивной функции.  достаточно в этой функции просто вести подсчет числа элементов в дереве, и по превышении заранее рассчитанной величины прекращать  сбор данных.  Таким путем мы можем найти баланс между скоростью и удобством. Отдавать все дерево целиком в treePanel не всегда возможно.  Деревья бывают большими. А отдавать по одному уровню за запрос не сильно удобно с точки зрения пользователя, когда на каждый клик мыши будет обращение к серверу за новой порцией данных. А вот разбив отдачу дерева скажем по 50-100 узлов за раз мы найдем необходимый компромисс.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/17/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/17</feedburner:origLink></item>
		<item>
		<title>Проблемы производительности extjs и общие рекомендации в разработке</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/246123476/16</link>
		<comments>http://extjs.indoweblog.com/archives/16#comments</comments>
		<pubDate>Wed, 05 Mar 2008 13:34:22 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/16</guid>
		<description><![CDATA[
Особенность extjs - очень тяжелый HTML код.  Причем броузер напрягается дважды. первый раз, когда все счастье собирается в DOM и второй раз, когда непосредственно выводится на экран. Как следствие - торможение интерфейса при более-менее серьезном количестве элементов. Причем это касается не только гридов и деревьев, но и форм и вообще любых элементов. Есть несколько [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://extjs.indoweblog.com/files/2008/03/faster.jpg" alt="extjs производительность" /></p>
<p>Особенность extjs - очень тяжелый HTML код.  Причем броузер напрягается дважды. первый раз, когда все счастье собирается в DOM и второй раз, когда непосредственно выводится на экран. Как следствие - торможение интерфейса при более-менее серьезном количестве элементов. Причем это касается не только гридов и деревьев, но и форм и вообще любых элементов. Есть несколько узких мест, которые нужно стараться обходить.</p>
<p>1. Загрузка собственно extjs. Как ни крути, как не сжимай, а размер javascript кода плюс CSS файла это весьма серьезно.  Тем более, что кроме загрузки есть еще и инициализация.  Старайтесь по-минимуму перегружать страницы в браузере.  Постарайтесь все вынести в updatemanager.</p>
<p>2. Javascript это костыль и инородное тело в браузере. Помните об этом постоянно.  Невнятная реализация многопоточной схемы исполнения скрипта,  делает нежизнеспособной саму идею многопоточности в js.  Собственно это и есть  источник основных торомозов в  extjs.   Поэтому старайтесь не полагаться на автоматику не скармливайте в конструктор класса огромный JSON с вложенными JSON ветками для дочерних элементов.  Создавайте дочерние элементы явно, вызовом соответствующих конструкторов в переменные, а потом кидайте эти переменные в JSON. Это значительно ускорит генерацию элементов.</p>
<p>3. applyTo это зло. Используйте render , и вызывайте его тогда, когда вам нужно, а не тогда, когда великий рандом скажет.</p>
<p>4. Не увлекайтесь созданием сраз большого числа визулальных элементов ( гридов, окон и т. п) а затем их показом на экране по мере необходимости. Практика показывает, что приложение в котором сразу генерится 5 гридов и 3 формы  работает в 5-10 раз медленнее, чем перегрузки через updatemanager.</p>
<p>5. Ну и помните, что броузер одновременно может создать только два соединения. Не забывайте об этом, когда строите форму с десятком комбобоксов подгружаемых с сервера.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/16/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/16</feedburner:origLink></item>
		<item>
		<title>extjs form custom validator или как сделать сложный валидатор сразу на два поля</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/244890062/14</link>
		<comments>http://extjs.indoweblog.com/archives/14#comments</comments>
		<pubDate>Mon, 03 Mar 2008 15:06:02 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/14</guid>
		<description><![CDATA[Если возникла необходимость сделать в extjs custom form validator, или проще говоря свой валидатор на форме, то вот один из вариантов решения.
Рассмотрим  задачу. Есть поисковая форма на extjs. В этой форме есть два поля с датой, которые задают интервал поиска. Нужно произвести проверку на длинну интервала, и если временной интервал превышает 31 день, то [...]]]></description>
			<content:encoded><![CDATA[<p>Если возникла необходимость сделать в extjs custom form validator, или проще говоря свой валидатор на форме, то вот один из вариантов решения.</p>
<p>Рассмотрим  задачу. Есть поисковая форма на extjs. В этой форме есть два поля с датой, которые задают интервал поиска. Нужно произвести проверку на длинну интервала, и если временной интервал превышает 31 день, то выдать сообщение об ошибке.</p>
<p><img src="http://extjs.indoweblog.com/files/2008/03/custom_form_validator.gif" alt="custom form validator" /><br />
Фирменное руководство extjs по этому поводу не дает никаких примеров. А те примеры, что есть в сети предлагают решение на основе всплывающего окна с сообщением об ошибке. Я же предлагаю решение, работающее так же как и родные валидаторы.</p>
<p>Создадим наши поля на форме, заполним их значениями по-умолчанию и навесим  фунецию проверки значений на правильность:<br />
<code><br />
var today = new Date();<br />
today = today.format('d/m/Y');<br />
var fromday = new Date().add(Date.DAY, -6);<br />
fromday = fromday.format('d/m/Y');<br />
fromDate =   new Ext.form.DateField({<br />
id:'from',<br />
fieldLabel: 'From',<br />
name: 'from',<br />
width:170,<br />
allowBlank:false ,<br />
format:'d/m/Y' ,<br />
value: fromday,<br />
validateValue: function (value) { return validateFromTo(value); }<br />
});</code><br />
<code><br />
toDate =   new Ext.form.DateField({<br />
id:'to',<br />
fieldLabel: 'To',<br />
name: 'to',<br />
width:170,<br />
allowBlank:false,<br />
format:'d/m/Y',<br />
value: today,<br />
validateValue: function (value) { return validateFromTo(value); }<br />
});</code></p>
<p>А вот и собственно функция проверки:<br />
<code><br />
function validateFromTo(value)<br />
{<br />
var v_from = fromDate.getValue();<br />
var v_to = toDate.getValue();<br />
if ((((parseInt(v_to.format('U'))-parseInt(v_from.format('U'))))/3600/24) &gt;31)<br />
{<br />
searchForm.getForm().markInvalid({'from':'The time period for a search cannot exceed 31 days. Please adjust dates to cover a 1 month time period'});<br />
searchForm.getForm().markInvalid({'to':'The time period for a search cannot exceed 31 days. Please adjust dates to cover a 1 month time period'});<br />
return false;<br />
};<br />
fromDate.clearInvalid();<br />
toDate.clearInvalid();<br />
return true;<br />
}</code></p>
<p>На ней остановлюсь подробнее. Сначала мы вычисляем временной интервал между начальной и конечной датами.  getValue возвращает обьект типа date. а его метод format форматирует дату так как нам нужно. Мы ее переведем в секунды. Потом отнимем от конечной даты начальную и проверим, чтоюы этот интервал был не более 31 дня.</p>
<p>Если интервал больше 31 дня, то при помощи метода  markInvalid мы помечаем оба поля нашим сообщением об ошибке, а если меньше, то при помощи clearInvalid  сбрасываем у обоих полей статус ошибки.</p>
<p>В результате имеем форму, на которой валидатор обрабатывает сразу два поля.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/14/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/14</feedburner:origLink></item>
		<item>
		<title>Как в extjs отправить форму через POST  или GET а не через AJAX</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/242026539/12</link>
		<comments>http://extjs.indoweblog.com/archives/12#comments</comments>
		<pubDate>Wed, 27 Feb 2008 10:46:15 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/12</guid>
		<description><![CDATA[Если  возникла необходимость отправить данные формы на сервер классическим способом через post или get, то в extjs это делается очень даже легко.  Создаем FormPanel у которой на onSubmit вешаем обработчик, который и будет сабмитить форму.

var Form1 = new Ext.form.FormPanel({
onSubmit: Ext.emptyFn,
submit: function() {
this.getForm().getEl().dom.action='куда сабмитить форму';
this.getForm().getEl().dom.method='POST';
this.getForm().getEl().dom.submit();
}
});

]]></description>
			<content:encoded><![CDATA[<p>Если  возникла необходимость отправить данные формы на сервер классическим способом через post или get, то в extjs это делается очень даже легко.  Создаем <code>FormPanel у которой на onSubmit вешаем обработчик, который и будет сабмитить форму.</code></p>
<p><code></code><code><br />
var Form1 = new Ext.form.FormPanel({<br />
onSubmit: Ext.emptyFn,<br />
submit: function() {<br />
this.getForm().getEl().dom.action='куда сабмитить форму';<br />
this.getForm().getEl().dom.method='POST';<br />
this.getForm().getEl().dom.submit();<br />
}<br />
});<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/12/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/12</feedburner:origLink></item>
		<item>
		<title>Extjs grid или как изменить стиль строки в гриде</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/241466861/9</link>
		<comments>http://extjs.indoweblog.com/archives/9#comments</comments>
		<pubDate>Tue, 26 Feb 2008 09:40:48 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/9</guid>
		<description><![CDATA[Часто случается необходимость подстветить в гриде отдельные строки по какому-нибудь критерию.  В extjs это делается очень просто. Extjs grid для своего view gthtl перед отрисовкой очередной строки грида вызывает метод
getRowClass. В качестве параметра туда передаются данные строки грида и ее индекс. А возвращать это метод должен просто название класса, которым отрисуется строка грида.
Вот рабочий [...]]]></description>
			<content:encoded><![CDATA[<p>Часто случается необходимость подстветить в гриде отдельные строки по какому-нибудь критерию.  В extjs это делается очень просто. Extjs grid для своего view gthtl перед отрисовкой очередной строки грида вызывает метод<br />
getRowClass. В качестве параметра туда передаются данные строки грида и ее индекс. А возвращать это метод должен просто название класса, которым отрисуется строка грида.<br />
Вот рабочий пример. Создадим вот такой CSS стиль:<br />
<code><br />
.vasia-pupkin {<br />
background-color:red;<br />
}<br />
</code><br />
а в код нашего extjs грида напишем вот такой javascript ( представим, что наш грид хранится в переменной grid ):<br />
<code><br />
grid.getView().getRowClass = function(row, index) {<br />
  if (row.data.fio == Вася Пупкин') {<br />
    return 'vasia-pupkin';<br />
  }<br />
</code><br />
И теперь, если в колонке fio встретится Вася Пупкин, то вся строка грида с Васей подсветится красным.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/9/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/9</feedburner:origLink></item>
		<item>
		<title>Наследование в extjs. Javascript и объекты.</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/241466862/8</link>
		<comments>http://extjs.indoweblog.com/archives/8#comments</comments>
		<pubDate>Tue, 26 Feb 2008 09:07:26 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/8</guid>
		<description><![CDATA[Бывает так, что при разработке интерфейса на extjs, необходимо иметь на странице несколько элементов, со схожими характеристиками.   В extjs есть такая штука как config, куда можно записать настройки по-умолчанию многих элементов.  Но можно пойти и классическим путем.  Так как весь extjs - объектная библиотека, то можно созать свои компоненты, унаследовав их [...]]]></description>
			<content:encoded><![CDATA[<p>Бывает так, что при разработке интерфейса на extjs, необходимо иметь на странице несколько элементов, со схожими характеристиками.   В extjs есть такая штука как config, куда можно записать настройки по-умолчанию многих элементов.  Но можно пойти и классическим путем.  Так как весь extjs - объектная библиотека, то можно созать свои компоненты, унаследовав их от стандартных. Хотя лично я не рекомендовал бы этим увлекаться. Потому, как на мой взхгляд главное в броузерных приложениях не читаемость кода, а его размер. Но в любом случае знать полезно, как наследовать свои компоненты от стандартных в extjs. Сейчас мы дешево и сердито  создадим свой пользовательский класс формы.<code><br />
SuperForm = Ext.extend(Ext.form.FormPanel({<br />
// пишем свои настройки<br />
labelWidth: 147<br />
,labelAlign:'right'</code></p>
<p>,initComponent:function() {</p>
<p>// а сюда пишем функционал для инициализации<br />
Ext.apply(this, {<br />
items:[{},{},{}]<br />
,buttons:[{},{}]<br />
});</p>
<p>// не забываем вызвать инициализацию родительского класса<br />
SuperForm.superclass.initComponent.apply(this, arguments);</p>
<p>}</p>
<p>// А вот так перекрываем евенты:<br />
,onRender:function() {<br />
// сюда пишем свою отрисовку</p>
<p>// и снова не затыть вызвать ролительский метод<br />
SuperForm.superclass.onRender.apply(this, arguments);</p>
<p>}</p>
<p>});</p>
<p>// И чтобы extjs смог включить ваш класс в свой репозитарий, придумаем ему xtype<br />
// и зарегестрируем его в extjs<br />
Ext.reg(&#8217;mysuuperform&#8217;, SuperForm)</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/8/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/8</feedburner:origLink></item>
		<item>
		<title>wordpress и extjs</title>
		<link>http://feeds.feedburner.com/~r/Extjs/~3/241466863/7</link>
		<comments>http://extjs.indoweblog.com/archives/7#comments</comments>
		<pubDate>Mon, 25 Feb 2008 11:30:30 +0000</pubDate>
		<dc:creator>extjs</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://extjs.indoweblog.com/archives/7</guid>
		<description><![CDATA[вот http://extjswordpress.net/ сайт. Это обычный блог на wordpress, к которому нарисована тема на extjs.  Все можно скачать. Все можно посмотреть. Как прикольная штука, имеющая академический интерес - да. Как рабочая вещь - нет. 800 с хвостом кб скачивать перед началом просмотра блога - нереально Exjs - это исключительно интерфейс к программам, а не к документам. [...]]]></description>
			<content:encoded><![CDATA[<p>вот <a href="http://extjswordpress.net/">http://extjswordpress.net/</a> сайт. Это обычный блог на wordpress, к которому нарисована тема на extjs.  Все можно скачать. Все можно посмотреть. Как прикольная штука, имеющая академический интерес - да. Как рабочая вещь - нет. 800 с хвостом кб скачивать перед началом просмотра блога - нереально Exjs - это исключительно интерфейс к программам, а не к документам. Но посмотреть все же настоятельно рекомендую.</p>
]]></content:encoded>
			<wfw:commentRss>http://extjs.indoweblog.com/archives/7/feed</wfw:commentRss>
		<feedburner:origLink>http://extjs.indoweblog.com/archives/7</feedburner:origLink></item>
	</channel>
</rss>
