﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-杂家-随笔分类-2.ExtJS</title><link>http://www.blogjava.net/super2/category/35591.html</link><description>学习学习</description><language>zh-cn</language><lastBuildDate>Wed, 10 Dec 2008 10:02:34 GMT</lastBuildDate><pubDate>Wed, 10 Dec 2008 10:02:34 GMT</pubDate><ttl>60</ttl><item><title>Ext列宽度不够，需要tip的解决</title><link>http://www.blogjava.net/super2/archive/2008/12/10/245468.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Wed, 10 Dec 2008 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/12/10/245468.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/245468.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/12/10/245468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/245468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/245468.html</trackback:ping><description><![CDATA[当一个列用render渲染的时候，如果列宽度不够，内容多出的部分会被隐藏，无法显示。这时需要一个鼠标滑过提示全部内容的tip功能。<br />
渲染的函数写成如下：<br />
function renderHallName(value, meta, rec, rowIdx, colIdx, ds){<br />
&nbsp;&nbsp;&nbsp; return '&lt;div ext:qtitle="" ext:qtip="' + value + '"&gt;'+ value +'&lt;/div&gt;';<br />
}<br />
顶部需要加入Ext.QuickTips.init();<br />
qtitle代表tip的标题, qtip代表内容。这时鼠标划过就会出现提示！<br />
<br /><img src ="http://www.blogjava.net/super2/aggbug/245468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-12-10 12:57 <a href="http://www.blogjava.net/super2/archive/2008/12/10/245468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext的Doctype问题</title><link>http://www.blogjava.net/super2/archive/2008/12/10/245465.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Wed, 10 Dec 2008 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/12/10/245465.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/245465.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/12/10/245465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/245465.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/245465.html</trackback:ping><description><![CDATA[如果用&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;，在IE6下当鼠标移动GRID上时，列的标题会变形，空白，没有文字。<br />
如果用&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;则没有这个问题，但是在IE6下会出现右边滚动栏空白。<br />
以上在IE7,FF3上都不会出现问题，只有IE6会有问题。<br />
<br />
解决方法：把ext-all.css里面的.x-grid3-header-offset{padding-left:1px;width:10000px;}注释掉就解决了<br />
<br /><img src ="http://www.blogjava.net/super2/aggbug/245465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-12-10 12:49 <a href="http://www.blogjava.net/super2/archive/2008/12/10/245465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Extjs 处理 Date 对象</title><link>http://www.blogjava.net/super2/archive/2008/11/21/241785.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Fri, 21 Nov 2008 00:46:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/11/21/241785.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/241785.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/11/21/241785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/241785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/241785.html</trackback:ping><description><![CDATA[<div class="content clear-block">
<p>java里面时间类型转换成json数据就成这样啦</p>
<p>"modifyTime":{"date":30,"day":3,"hours":15,"minutes":14,"month":3,"nanos":0,"seconds"</p>
<p>:38,"time":1209539678000,"timezoneOffset":-480,"year":108}<br />
在gridpanel里面就会显示成[object,object]</p>
<p>在store里面这样写</p>
<p>{<br />
name : 'createTime',<br />
type : 'date',<br />
mapping : 'createTime.time',<br />
dateFormat : 'time'<br />
}</p>
<p>在ColumnModel里面这样写</p>
<p>{<br />
header : "创建时间",<br />
sortable : true,<br />
dataIndex : 'createTime',<br />
renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')<br />
}</p>
<p>就会显示成你想要的格式不用在后台处理成字符串啦。</p>
</div><img src ="http://www.blogjava.net/super2/aggbug/241785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-11-21 08:46 <a href="http://www.blogjava.net/super2/archive/2008/11/21/241785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十九)Ext.widgets-grid(1)</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237582.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237582.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237582.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237582.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.grid.ColumnModel</span><br />
用于定义Grid的列<br />
用例<br />
var colModel = new Ext.grid.ColumnModel([<br />
&nbsp;&nbsp;&nbsp;  {header: "Ticker", width: 60, sortable: true},<br />
&nbsp;&nbsp;&nbsp;  {header: "Company Name", width: 150, sortable: true}<br />
&nbsp;&nbsp;&nbsp;  ]);<br />
<br />
回到ColumnModel,它的构造参数是一个config组成的数组,其中config定义为{<br />
&nbsp;&nbsp;&nbsp;  align : String&nbsp;&nbsp;&nbsp;  //css中的对齐方式<br />
&nbsp;&nbsp;&nbsp;  dataIndex : String&nbsp;&nbsp;&nbsp;  //要绑定的Store之Record字段名<br />
&nbsp;&nbsp;&nbsp;  fixed : Boolean&nbsp;&nbsp;&nbsp;  //如果为真列宽不能被改变<br />
&nbsp;&nbsp;&nbsp;  header : String&nbsp;&nbsp;&nbsp;  //头部显示的名称<br />
&nbsp;&nbsp;&nbsp;  hidden : Boolean&nbsp;&nbsp;&nbsp;  //隐藏本列<br />
&nbsp;&nbsp;&nbsp;  id : String&nbsp;&nbsp;&nbsp;  //主要用于样式选择,如果已定义此属性,那么列所在的单元格会定义class为 x-grid-td-id<br />
&nbsp;&nbsp;&nbsp;  renderer : Function&nbsp;&nbsp;&nbsp;  //可以使用这个构造参数格式化数据<br />
&nbsp;&nbsp;&nbsp;  resizable : Boolean&nbsp;&nbsp;&nbsp;  //可调节尺寸<br />
&nbsp;&nbsp;&nbsp;  sortable : Boolean&nbsp;&nbsp;&nbsp;  // 可排序<br />
&nbsp;&nbsp;&nbsp;  width : Number&nbsp;&nbsp;&nbsp;  //宽度<br />
}<br />
另
外虽然未经声明,但config事实上支持editor:Ext.form.Field属性,这点会在Ext.grid.EditorGridPanel
中看到,另外为了扩展grid的表现,我们通常也需要自定义列,顺便提一个有趣的列,Ext.grid.RowNumberer,这是Ext为我们扩展好
的一个简单列,它的构造很简单,也没有其它的方法和属性,Ext.grid.RowNumberer({ header : String,
sortable : Boolean, width : Number})如果使用它,上例可改为<br />
var colModel = new Ext.grid.ColumnModel([<br />
&nbsp;&nbsp;&nbsp;  new Ext.grid.RowNumberer(),<br />
&nbsp;&nbsp;&nbsp;  {header: "Ticker", width: 60, sortable: true},<br />
&nbsp;&nbsp;&nbsp;  {header: "Company Name", width: 150, sortable: true}<br />
&nbsp;&nbsp;&nbsp;  ]);<br />
属性<br />
defaultSortable : Boolean&nbsp;&nbsp;&nbsp;  //默认可排序<br />
defaultWidth : Number&nbsp;&nbsp;&nbsp;  //默认的宽度<br />
setConfig : Object&nbsp;&nbsp;&nbsp;  //返回构造时的config参数<br />
<br />
方法<br />
ColumnModel( Object config )<br />
构造<br />
<br />
getCellEditor( Number colIndex, Number rowIndex ) : Object<br />
得到指定行列的编辑者<br />
getColumnById( String id ) : Object<br />
得到指定id的列对象<br />
getColumnCount() : Number<br />
得到列数<br />
getColumnHeader( Number col ) : String<br />
得到列头部文本<br />
getColumnId( Number index ) : String<br />
得到列id<br />
getColumnTooltip( Number col ) : String<br />
得到列提示<br />
getColumnWidth( Number col ) : Number<br />
列宽<br />
getColumnsBy( Function fn, [Object scope] ) : Array<br />
通过fn找到指定的列<br />
getDataIndex( Number col ) : Number<br />
得到指定列的数据绑定对象在store中的序号<br />
getIndexById( String id ) : Number<br />
通过id找序号<br />
getRenderer( Number col ) : Function<br />
得到绘制器<br />
getTotalWidth( Boolean includeHidden ) : Number<br />
总的宽度<br />
hasListener( String eventName ) : Boolean<br />
有事件侦听者?<br />
isCellEditable( Number colIndex, Number rowIndex ) : Boolean<br />
指定行列可编辑?<br />
isFixed() : void<br />
应该返回Boolean,充满?<br />
isHidden( Number colIndex ) : Boolean<br />
指定列隐藏?<br />
isResizable() : Boolean<br />
可重写义大小<br />
isSortable( Number col ) : Boolean<br />
可排序?<br />
setColumnHeader( Number col, String header ) : void<br />
设置指定列列头<br />
setColumnTooltip( Number col, String tooltip ) : void<br />
设置指定列提示<br />
setColumnWidth( Number col, Number width ) : void<br />
设置指定列宽度<br />
setConfig( Array config ) : void<br />
重设config<br />
setDataIndex( Number col, Number dataIndex ) : void<br />
设置指定列的数据源<br />
setEditable( Number col, Boolean editable ) : void<br />
设置指定列是否可编辑<br />
setEditor( Number col, Object editor ) : void<br />
为指定列设置编辑器<br />
setHidden( Number colIndex, Boolean hidden ) : void<br />
设置指定列隐藏<br />
setRenderer( Number col, Function fn ) : void<br />
为指定列设置输出方法<br />
<br />
事件<br />
columnmoved : ( ColumnModel this, Number oldIndex, Number newIndex )<br />
configchanged : ( ColumnModel this )<br />
headerchange : ( ColumnModel this, Number columnIndex, String newText )<br />
hiddenchange : ( ColumnModel this, Number columnIndex, Boolean hidden )<br />
widthchange : ( ColumnModel this, Number columnIndex, Number newWidth )<br />
<br />
<span style="color: #ff0000;">Ext.grid.PropertyColumnModel</span><br />
继承自Ext.grid.ColumnModel,专为Ext.grid.PropertyGrid而设计,构造有点不同,不过这个api文档不知道谁写的,ext2中好象没有grid了,<br />
PropertyColumnModel( Ext.grid.Grid grid, Object source )<br />
<br />
<span style="color: #ff0000;">Ext.grid.GridView</span><br />
为GridPanel提供视图支持<br />
config{<br />
&nbsp;&nbsp;&nbsp;  autoFill : Boolean<br />
&nbsp;&nbsp;&nbsp;  enableRowBody : Boolean<br />
&nbsp;&nbsp;&nbsp;  forceFit : Boolean<br />
}<br />
<br />
属性<br />
columnsText : String&nbsp;&nbsp;&nbsp;  //列文本<br />
scrollOffset : Number&nbsp;&nbsp;&nbsp;  //滚动步行<br />
sortAscText : String&nbsp;&nbsp;&nbsp;  //正序文本<br />
sortClasses : Array&nbsp;&nbsp;&nbsp;  //正序和倒序时头部列使用的样式,默认为["sort-asc", "sort-desc"]<br />
sortDescText : String&nbsp;&nbsp;&nbsp;  //倒序文本<br />
<br />
方法<br />
GridView( Object config )<br />
构造<br />
focusCell( Number row, Number col ) : void<br />
指定第row行第col列得到焦点<br />
focusRow( Number row ) : void<br />
选中第row行<br />
getCell( Number row, Number col ) : HtmlElement<br />
得到指定行列的htmlelement对象<br />
getHeaderCell( Number index ) : HtmlElement<br />
得到指定列的表单头对象<br />
getRow( Number index ) : HtmlElement<br />
得到指定行的htmlelement对象<br />
getRowClass( Record record, Number index, Object rowParams, Store ds ) : void<br />
//得到指定行的样式?郁闷的是没有能在GridView.js中找到此方法的定义<br />
refresh( [Boolean headersToo] ) : void<br />
涮新显示<br />
scrollToTop() : void<br />
滚动到头部<br />
<br />
<span style="color: #ff0000;">Ext.grid.GroupingView</span><br />
继承自Ext.grid.GridView,用于数据分组 ,应用于<br />
config{<br />
emptyGroupText : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //空的分组显示文本<br />
enableGroupingMenu : Boolean&nbsp;&nbsp;&nbsp;  //允许分组菜单<br />
enableNoGroups : Boolean&nbsp;&nbsp;&nbsp;  //允许分组/不分组显示<br />
groupTextTpl : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //这是个模板,分组项的内容依此显示,语法参见模板,<br />
hideGroupedColumn : Boolean&nbsp;&nbsp;&nbsp;  //隐藏分组列<br />
startCollapsed : Boolean&nbsp;&nbsp;&nbsp;  //开始时收起,默认为假<br />
}<br />
另外虽然没有在api中说明,但groupByText和showGroupsText属性也是可以在config中指定的<br />
方法<br />
GroupingView( Object config )<br />
构造<br />
getGroupId( String value ) : void<br />
取得指定值的分组id,为toggleGroup而准备的方法<br />
toggleAllGroups( [Boolean expanded] ) : void<br />
收起或展开所有的分组<br />
toggleGroup( String groupId, [Boolean expanded] ) : void<br />
展开或收起指定的分组,例grid.view.toggleGroup(grid.view.getGroupId('Horticulturalist'));会展开或收起分组字段值为'Horticulturalist'的分组<br />
<span style="color: #000000;">Ext.onReady(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">定义数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> arr</span><span style="color: #000000;">=</span><span style="color: #000000;">[ [</span><span style="color: #000000;">'</span><span style="color: #000000;">Bill</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Gardener</span><span style="color: #000000;">'</span><span style="color: #000000;">], [ </span><span style="color: #000000;">'</span><span style="color: #000000;">Ben</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Horticulturalist</span><span style="color: #000000;">'</span><span style="color: #000000;">],[</span><span style="color: #000000;">'</span><span style="color: #000000;">你</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Gardener</span><span style="color: #000000;">'</span><span style="color: #000000;">],[</span><span style="color: #000000;">'</span><span style="color: #000000;">他</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Gardener</span><span style="color: #000000;">'</span><span style="color: #000000;">],[ </span><span style="color: #000000;">'</span><span style="color: #000000;">我</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Horticulturalist</span><span style="color: #000000;">'</span><span style="color: #000000;">] ];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> reader </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.data.ArrayReader(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{}</span></span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">定义数组到record的映射关系</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{name: </span><span style="color: #000000;">'</span><span style="color: #000000;">name</span><span style="color: #000000;">'</span><span style="color: #000000;">}</span></span><span style="color: #000000;">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{name: </span><span style="color: #000000;">'</span><span style="color: #000000;">occupation</span><span style="color: #000000;">'</span><span style="color: #000000;">, mapping: </span><span style="color: #000000;">1</span><span style="color: #000000;">}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">生成元数据</span><span style="color: #008000;"><br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> store</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.data.Store(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  store.loadData(arr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">现在配置列信息&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> col</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.ColumnModel([<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.RowNumberer(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{header:</span><span style="color: #000000;">'</span><span style="color: #000000;">序号</span><span style="color: #000000;">'</span><span style="color: #000000;">,width:</span><span style="color: #000000;">30</span><span style="color: #000000;">}</span></span><span style="color: #000000;">),<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{header:</span><span style="color: #000000;">'</span><span style="color: #000000;">姓名</span><span style="color: #000000;">'</span><span style="color: #000000;">,sortable: </span><span style="color: #0000ff;">true</span><span style="color: #000000;">,dataIndex:</span><span style="color: #000000;">'</span><span style="color: #000000;">name</span><span style="color: #000000;">'</span><span style="color: #000000;">}</span></span><span style="color: #000000;">,<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{header:</span><span style="color: #000000;">'</span><span style="color: #000000;">职业</span><span style="color: #000000;">'</span><span style="color: #000000;">,sortable: </span><span style="color: #0000ff;">true</span><span style="color: #000000;">,dataIndex:</span><span style="color: #000000;">'</span><span style="color: #000000;">occupation</span><span style="color: #000000;">'</span><span style="color: #000000;">}</span></span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">配置视图信息</span><span style="color: #008000;"><br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> view</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.GridView(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{forceFit:</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,sortAscText :</span><span style="color: #000000;">'</span><span style="color: #000000;">正序</span><span style="color: #000000;">'</span><span style="color: #000000;">, sortDescText :</span><span style="color: #000000;">'</span><span style="color: #000000;">倒序</span><span style="color: #000000;">'</span><span style="color: #000000;">}</span></span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  view.columnsText</span><span style="color: #000000;">=</span><span style="color: #000000;">'</span><span style="color: #000000;">列显示/隐藏</span><span style="color: #000000;">'</span><span style="color: #000000;">;<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">现在我们有一个可用的grid了,别骄傲这只是第一步&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> grid</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.GridPanel(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  el:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  height:</span><span style="color: #000000;">200</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width:</span><span style="color: #000000;">400</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  store:store,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cm:col,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  view:view<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  grid.render();&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">现在我们需要一个GroupingStore</span><span style="color: #008000;"><br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> gstore</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.data.GroupingStore(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupField:</span><span style="color: #000000;">'</span><span style="color: #000000;">name</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupOnSort:</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sortInfo:</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{field: </span><span style="color: #000000;">'</span><span style="color: #000000;">occupation</span><span style="color: #000000;">'</span><span style="color: #000000;">, direction: </span><span style="color: #000000;">"</span><span style="color: #000000;">ASC</span><span style="color: #000000;">"</span><span style="color: #000000;">}</span></span><span style="color: #000000;"> </span><span style="color: #008000;">//</span><span style="color: #008000;">使用GroupingStore时必须指定sortInfo信息</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  gstore.loadData(arr);&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: #008000;">//</span><span style="color: #008000;">扩展一下我们的grid,让他能分组当然会更酷一点&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> ggrid </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.GridPanel(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ds: gstore,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cm:col,<br />
<img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  view: </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.grid.GroupingView(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  forceFit:</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sortAscText :</span><span style="color: #000000;">'</span><span style="color: #000000;">正序</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sortDescText :</span><span style="color: #000000;">'</span><span style="color: #000000;">倒序</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  columnsText:</span><span style="color: #000000;">'</span><span style="color: #000000;">列显示/隐藏</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupByText:</span><span style="color: #000000;">'</span><span style="color: #000000;">依本列分组</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  showGroupsText:</span><span style="color: #000000;">'</span><span style="color: #000000;">分组显示</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupTextTpl: </span><span style="color: #000000;">'</span><span style="color: #000000;">{text} ({[values.rs.length]} 条记录)</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  frame:</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width: </span><span style="color: #000000;">400</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  height: </span><span style="color: #000000;">300</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  collapsible: </span><span style="color: #0000ff;">true</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  animCollapse: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">); </span><img src ="http://www.blogjava.net/super2/aggbug/237582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:26 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(二十)Ext.widgets-grid(2) </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237583.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237583.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237583.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237583.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">Ext.grid.EditorGridPanel<br />
可编辑数据表格<br />
Config {<br />
clicksToEdit : Number&nbsp;&nbsp;  //点几次开始编辑,默认为2<br />
}<br />
<br />
方法<br />
EditorGridPanel()<br />
构造,应为 EditorGridPanel(Object config)<br />
startEditing( Number rowIndex, Number colIndex ) : void<br />
stopEditing() : void<br />
开始停止编辑<br />
<br />
事件<br />
afteredit : ( Object e )<br />
beforeedit : ( Object e )<br />
validateedit : ( Object e )<br />
<br />
下面我们扩展一下刚才的示例应用一下EditorGridPanel//定义数组<br />
var arr=[<br />
&nbsp;&nbsp;&nbsp;  ['Bill', 'Gardener','2007-01-02',-10,true],<br />
&nbsp;&nbsp;&nbsp;  [ 'Ben', 'Horticulturalist','2007-01-03',-20.1,false],<br />
&nbsp;&nbsp;&nbsp;  ['你', 'Gardener','2007-02-02',0,true],<br />
&nbsp;&nbsp;&nbsp;  ['他', 'Gardener','2007-01-04',13,false],<br />
&nbsp;&nbsp;&nbsp;  [ '我', 'Horticulturalist','2007-01-05',15.2,false]<br />
&nbsp;&nbsp;&nbsp;  ];<br />
var reader = new Ext.data.ArrayReader(<br />
&nbsp;&nbsp;  ...{},<br />
//定义数组到record的映射关系<br />
&nbsp;&nbsp;  [<br />
&nbsp;&nbsp;&nbsp;  ...{name: 'name'},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ...{name: 'occupation', mapping: 1},<br />
&nbsp;&nbsp;&nbsp;  ...{name:'date',type: 'date',dateFormat: 'Y-m-d'}, //用指定的格式转换日期<br />
&nbsp;&nbsp;&nbsp;  ...{name:'float',type:'float'},<br />
&nbsp;&nbsp;&nbsp;  ...{name:'bool',type:'bool'}<br />
&nbsp;&nbsp;  ]<br />
);<br />
//生成元数据<br />
var store=new Ext.data.Store(...{<br />
&nbsp;&nbsp;&nbsp;  reader:reader<br />
&nbsp;&nbsp;&nbsp;  });<br />
store.loadData(arr);<br />
<br />
//自定义可编辑列,从ext的示例抄的,但是却要init郁闷<br />
Ext.grid.CheckColumn = function(config)...{<br />
&nbsp;&nbsp;&nbsp;  Ext.apply(this, config);<br />
&nbsp;&nbsp;&nbsp;  if(!this.id)...{<br />
&nbsp;&nbsp;&nbsp;  this.id = Ext.id();<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  this.renderer = this.renderer.createDelegate(this);<br />
};<br />
//重写了三个方法,捕捉mousedown修改数据<br />
Ext.grid.CheckColumn.prototype =...{<br />
init : function(grid)...{<br />
&nbsp;&nbsp;&nbsp;  this.grid = grid;<br />
&nbsp;&nbsp;&nbsp;  this.grid.on('render', function()...{<br />
&nbsp;&nbsp;&nbsp;  var view = this.grid.getView();<br />
&nbsp;&nbsp;&nbsp;  view.mainBody.on('mousedown', this.onMouseDown, this);<br />
&nbsp;&nbsp;&nbsp;  }, this);<br />
},<br />
onMouseDown : function(e, t)...{ <br />
&nbsp;&nbsp;&nbsp;  if(t.className &amp;&amp; t.className.indexOf('x-grid3-cc-'+this.id) != -1)...{<br />
&nbsp;&nbsp;&nbsp;  e.stopEvent();<br />
&nbsp;&nbsp;&nbsp;  var index = this.grid.getView().findRowIndex(t);<br />
&nbsp;&nbsp;&nbsp;  var record = this.grid.store.getAt(index);<br />
&nbsp;&nbsp;&nbsp;  record.set(this.dataIndex, !record.data[this.dataIndex]);<br />
&nbsp;&nbsp;&nbsp;  }<br />
},<br />
<br />
renderer : function(v, p, record)...{<br />
&nbsp;&nbsp;&nbsp;  p.css += ' x-grid3-check-col-td';<br />
&nbsp;&nbsp;&nbsp;  return '&lt;div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'"&gt;&#160;&lt;/div&gt;';<br />
}<br />
}<br />
<br />
//绑定到bool字段<br />
var checkColumn=new Ext.grid.CheckColumn(...{<br />
&nbsp;&nbsp;  header: "布尔值",<br />
&nbsp;&nbsp;  dataIndex: 'bool'<br />
});<br />
/**//*<br />
&nbsp;&nbsp;&nbsp;  现在配置列信息,为了本地化日期选择器,请包含ext-lang-zh_CN.js,并修改Date.dayNames = ["日","一","二","三","四","五","六"];<br />
&nbsp;&nbsp;&nbsp;  在Ext.apply(Ext.DatePicker.prototype, {...})中加入okText:"确定",cancelText:"取消";<br />
*/<br />
var col=new Ext.grid.ColumnModel([<br />
&nbsp;&nbsp;&nbsp;  new Ext.grid.RowNumberer(...{header:'序号',width:30}),<br />
&nbsp;&nbsp;&nbsp;  ...{header:'姓名',sortable: true,dataIndex:'name'},<br />
&nbsp;&nbsp;&nbsp;  ...{header:'职业',sortable: true,dataIndex:'occupation'},<br />
&nbsp;&nbsp;&nbsp;  ...{&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  id:'datacol',<br />
&nbsp;&nbsp;&nbsp;  header:'日期',<br />
&nbsp;&nbsp;&nbsp;  sortable:true,<br />
&nbsp;&nbsp;&nbsp;  dataIndex:'date',renderer: Ext.util.Format.dateRenderer('Y年m月d日'),//格式化显示<br />
&nbsp;&nbsp;&nbsp;  editor:new Ext.form.DateField()<br />
&nbsp;&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;
...{header:'数值
',sortable:true,dataIndex:'float',renderer:formatFloat,align:
'right',editor:new Ext.form.NumberField()}, //自定义显示方式,右对齐<br />
&nbsp;&nbsp;&nbsp;  checkColumn //这个"选择框列"看起来的确漂亮些,其实是通过修改背景图片实现的<br />
]);<br />
<br />
//配置视图信息<br />
var view=new Ext.grid.GridView(...{forceFit:true,sortAscText :'正序', sortDescText :'倒序'});<br />
view.columnsText='列显示/隐藏';<br />
//现在我们看看可编辑的数据表格能用了吗&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
var grid=new Ext.grid.EditorGridPanel(...{<br />
&nbsp;&nbsp;&nbsp;  el:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  height:200,<br />
&nbsp;&nbsp;&nbsp;  width:400,<br />
&nbsp;&nbsp;&nbsp;  store:store,<br />
&nbsp;&nbsp;&nbsp;  cm:col,<br />
&nbsp;&nbsp;&nbsp;  view:view<br />
&nbsp;&nbsp;&nbsp;  });&nbsp;&nbsp;&nbsp;  <br />
//为什么原例不需要init?<br />
checkColumn.init(grid);<br />
grid.render();<br />
<br />
function formatFloat(val)...{<br />
&nbsp;&nbsp;&nbsp;  var bgcolor;<br />
&nbsp;&nbsp;&nbsp;  if(val&gt;0)...{<br />
&nbsp;&nbsp;&nbsp;  bgcolor='#FF0000';<br />
&nbsp;&nbsp;&nbsp;  }else if(val&lt;0)...{<br />
&nbsp;&nbsp;&nbsp;  bgcolor='#00FF00';<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  else...{<br />
&nbsp;&nbsp;&nbsp;  bgcolor='#000000';<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  return( ['&lt;span style="color:',bgcolor,'"&gt;',val,'&lt;/span&gt;'].join(''));<br />
}<br />
<br />
Ext.grid.PropertyGrid<br />
属性表格.继承自EditorGridPanel,用习惯ide的用户都会喜欢这个简单的属性表格,<br />
<br />
config{<br />
&nbsp;&nbsp;  customEditors : Object&nbsp;&nbsp;  //自定义属性编辑器<br />
&nbsp;&nbsp;  &nbsp;&nbsp;  source : Object&nbsp;&nbsp;  //数据源<br />
}<br />
<br />
方法<br />
PropertyGrid( Object config )<br />
构造<br />
<br />
getSource() : Object<br />
setSource( Object source ) : void<br />
得到和设置数据源<br />
<br />
事件<br />
beforepropertychange : ( Object source, String recordId, Mixed value,<br />
propertychange : ( Object source, String recordId, Mixed value, Mixed<br />
<br />
同样用一个简单的示例来完成PropertyGrid的学习<br />
var grid=new Ext.grid.PropertyGrid(...{<br />
&nbsp;&nbsp;&nbsp;  el:Ext.getBody()<br />
&nbsp;&nbsp;&nbsp;  ,height:200<br />
&nbsp;&nbsp;&nbsp;  ,width:400<br />
&nbsp;&nbsp;&nbsp;  ,viewConfig : ...{forceFit:true}<br />
&nbsp;&nbsp;&nbsp;  ,customEditors:...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  '年龄':new Ext.grid.GridEditor(new Ext.form.NumberField())<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  ,source:...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  '姓名':'blackant'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,'年龄':100<br />
&nbsp;&nbsp;&nbsp;  }<br />
});<br />
<br />
grid.source['性别']='男';<br />
grid.customEditors['性别']=new Ext.grid.GridEditor(new Ext.form.ComboBox(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  editable:false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,triggerAction: 'all'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,store: new Ext.data.SimpleStore(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fields: ['gender'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  data : [['男'],['女']]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,displayField:'gender'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,forceSelection:true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ,mode:'local'<br />
}));<br />
grid.render();<br />
<br />
选择模式都很容易使用,略过,至于其它的扩展,有时间再慢慢研究了,第一步先以学会使用为主</div><img src ="http://www.blogjava.net/super2/aggbug/237583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:26 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十八) Ext.Toolbar</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237581.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237581.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237581.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237581.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237581.html</trackback:ping><description><![CDATA[工具栏,使用起来很简单，add已准备好的元素就行<br />
<br />
方法<br />
Toolbar( Object/Array config )<br />
构造<br />
<br />
add( Mixed arg1, Mixed arg2, Mixed etc. ) : void<br />
增加元素<br />
可以是 <br />
1:Ext.Toolbar.Button&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addButton<br />
2:HtmlElement&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addElement<br />
3:Field&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addField<br />
4:Item&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addItem<br />
5:String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addText<br />
6:'separator'或'-'&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addSeparator<br />
7:''&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addSpacer<br />
8:'-&gt;'&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  相当于addFill<br />
<br />
addButton( Object/Array config ) : Ext.Toolbar.Button/Array<br />
添加Ext.Toolbar.Button/SplitButton对象,其实因为Ext.Toolbar.Button和Ext.Button用起来没什么区别,而且Toolbar两者都支持，我实验时没发现使用上有什么不同<br />
<br />
addDom( Object config ) : Ext.Toolbar.Item<br />
添加DOM节点<br />
<br />
addElement( Mixed el ) : Ext.Toolbar.Item<br />
添加Element对象<br />
addField( Ext.form.Field field ) : Ext.ToolbarItem<br />
添加Ext.form.Field对象<br />
<br />
addFill() : Ext.Toolbar.Fill<br />
添加一个撑满工具条的空白元素<br />
<br />
addItem( Ext.Toolbar.Item item ) : Ext.Toolbar.Item<br />
添回Ext.Toolbar.Item对象<br />
<br />
addSeparator() : Ext.Toolbar.Item<br />
添加一个分隔元素,相当于addItem(new Ext.Toolbar.Separator());<br />
<br />
addSpacer() : Ext.Toolbar.Spacer<br />
添加一个空白元素,相当于addItem(new Ext.Toolbar.Spacer());<br />
<br />
addText( String text ) : Ext.Toolbar.Item<br />
添加文本元素,相当于addItem(new Ext.Toolbar.TextItem(text));<br />
<br />
insertButton( Number index, Object/Ext.Toolbar.Item/Ext.Toolbar.Button button ) : Ext.Toolbar.Button/Item<br />
在第index个元素之前插入button对象<br />
<br />
Ext.Toolbar.Item<br />
工具栏元素基类<br />
<br />
Toolbar.Item( HTMLElement el )<br />
构造<br />
<br />
destroy() : void<br />
销毁<br />
<br />
disable() : void<br />
enable() : void<br />
可用／禁用<br />
<br />
focus() : void<br />
得到焦点　<br />
<br />
getEl() : HTMLElement<br />
得到当前DOM对象<br />
<br />
setVisible( Boolean visible ) : void<br />
show() : void<br />
hide() : void<br />
显示隐藏<br />
<br />
Ext.Toolbar.Separator<br />
继承自item,工具栏分隔符<br />
<br />
Ext.Toolbar.Spacer<br />
继承自item,工具栏空白元素<br />
<br />
Ext.Toolbar.TextItem<br />
继承自item,工具栏文本元素<br />
<br />
Ext.Toolbar.Fill<br />
继承自Spacer,工具栏空白元素,撑满工具栏<br />
<br />
简单的示例<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" dragover="true" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff;">var</span><span style="color: #000000;"> tb </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.Toolbar(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{width:</span><span style="color: #000000;">400</span><span style="color: #000000;">}</span></span><span style="color: #000000;">);<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" dragover="true" align="top"  alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">在add之前先render,必要,不然会报错//在add之前先render,必要</span><span style="color: #008000;"><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" dragover="true" align="top"  alt="" /></span><span style="color: #000000;">tb.render(Ext.getBody());<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />tb.addText(</span><span style="color: #000000;">'</span><span style="color: #000000;">请选择时间</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />tb.add( </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.form.DateField(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{ </span><span style="color: #008000;">//</span><span style="color: #008000;">DateField</span><span style="color: #008000;"><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:</span><span style="color: #000000;">'</span><span style="color: #000000;">DateField</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  format:</span><span style="color: #000000;">'</span><span style="color: #000000;">Y-m-d</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  disabledDays:[</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">6</span><span style="color: #000000;">]<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">)<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />);<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />tb.addButton(<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.Toolbar.Button(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  text:</span><span style="color: #000000;">'</span><span style="color: #000000;">button</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  handler:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(item)</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert(</span><span style="color: #000000;">"</span><span style="color: #000000;">toolbar</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">您点击了</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">item.text)<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;"><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">)<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />);<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />tb.addSpacer();<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />tb.addSeparator();<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />tb.addFill();<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />tb.add(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.SplitButton(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  handler: </span><span style="color: #0000ff;">function</span><span style="color: #000000;">(item)</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert(</span><span style="color: #000000;">"</span><span style="color: #000000;">点击事件</span><span style="color: #000000;">"</span><span style="color: #000000;">,String.format(</span><span style="color: #000000;">"</span><span style="color: #000000;">您选择了{0}</span><span style="color: #000000;">"</span><span style="color: #000000;">,item.text));<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  arrowTooltip : </span><span style="color: #000000;">"</span><span style="color: #000000;">更多</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  text:</span><span style="color: #000000;">'</span><span style="color: #000000;">按我</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  menu:</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.menu.Menu(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: </span><span style="color: #000000;">'</span><span style="color: #000000;">mainMenu</span><span style="color: #000000;">'</span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items: [<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: </span><span style="color: #000000;">'</span><span style="color: #000000;">菜单项1</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">,<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: </span><span style="color: #000000;">'</span><span style="color: #000000;">菜单项2</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">]<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">)<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">)<br />
<img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />);</span><img src ="http://www.blogjava.net/super2/aggbug/237581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:25 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十七) Ext.menu.Menu</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237580.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237580.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237580.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237580.html</trackback:ping><description><![CDATA[Ext.menu.Menu<br />
菜单对象<br />
<br />
config{<br />
&nbsp;&nbsp;&nbsp;  allowOtherMenus : Boolean&nbsp;&nbsp;&nbsp;  //允许同时显示其它的菜单?<br />
&nbsp;&nbsp;&nbsp;  defaultAlign : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //默认对齐方式:tl-bl?<br />
&nbsp;&nbsp;&nbsp;  defaults : Object&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //默认的菜单项配置,将会应用到所有的items<br />
&nbsp;&nbsp;&nbsp;  items : Mixed&nbsp;&nbsp;&nbsp;  //菜单项数组<br />
&nbsp;&nbsp;&nbsp;  minWidth : Number&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //最小宽度.默认120<br />
&nbsp;&nbsp;&nbsp;  shadow : Boolean/String&nbsp;&nbsp;&nbsp;  //<br />
&nbsp;&nbsp;&nbsp;  subMenuAlign : String&nbsp;&nbsp;&nbsp;  //子菜单对齐方式 tl-tr?<br />
}<br />
<br />
Menu( Object config )<br />
构造<br />
<br />
add( Mixed args ) : Ext.menu.Item<br />
添加菜单项<br />
可能的参数为&nbsp;&nbsp;&nbsp;<br />
* 从Ext.menu.Item继承来的菜单项对象<br />
* 可以被转换为menu item的HTMLElement对象<br />
* 一个Ext.menu.Item的构造config对象<br />
*一个字符串,-或separator将为分隔项,其它的做为TextItem对象的构造参数<br />
<br />
<br />
addElement( Mixed el ) : Ext.menu.Item<br />
添加Element对象<br />
<br />
addItem( Ext.menu.Item item ) : Ext.menu.Item<br />
添加Item 对象<br />
<br />
addMenuItem( Object config ) : Ext.menu.Item<br />
添加Item对象,这回传入的参数是item构造的config参数<br />
<br />
addSeparator() : Ext.menu.Item<br />
添加间隔项<br />
<br />
addText( String text ) : Ext.menu.Item<br />
添加文本项<br />
<br />
getEl() : Ext.Element<br />
得到当前element对象<br />
<br />
hide( [Boolean deep] ) : void<br />
隐藏<br />
<br />
insert( Number index, Ext.menu.Item item ) : Ext.menu.Item<br />
在index位置插入item<br />
isVisible() : void<br />
可见?<br />
<br />
remove( Ext.menu.Item item ) : void<br />
移除item<br />
<br />
removeAll() : void<br />
移除所有<br />
<br />
show( Mixed element, [String position], [Ext.menu.Menu parentMenu] ) : void<br />
相对于element显示当前菜单<br />
<br />
showAt( Array xyPosition, [Ext.menu.Menu parentMenu] ) : void<br />
在绝对位置xyposition显示当前菜单<br />
<br />
<br />
Ext.menu.BaseItem<br />
所有菜单项的基类,继承自Component<br />
<br />
config {<br />
&nbsp;&nbsp;&nbsp;  activeClass : String&nbsp;&nbsp;&nbsp;  //活跃时的样式类,默认x-menu-item-active<br />
&nbsp;&nbsp;&nbsp;  canActivate : Boolean&nbsp;&nbsp;&nbsp;  //能设置活跃?默认为false<br />
&nbsp;&nbsp;&nbsp;  handler : Function&nbsp;&nbsp;&nbsp;  //事件处理句柄<br />
&nbsp;&nbsp;&nbsp;  hideDelay : Number&nbsp;&nbsp;&nbsp;  //隔多长时间自动隐藏,默认100(毫秒)<br />
&nbsp;&nbsp;&nbsp;  hideOnClick : Boolean&nbsp;&nbsp;&nbsp;  //点击后自动隐藏,默认为真<br />
}<br />
<br />
BaseItem( Object config )<br />
构造<br />
<br />
setHandler( Function handler, Object scope ) : void<br />
设置处理句柄handler<br />
<br />
事件:<br />
activate : ( Ext.menu.BaseItem this )<br />
click : ( Ext.menu.BaseItem this, Ext.EventObject e )<br />
deactivate : ( Ext.menu.BaseItem this )<br />
<br />
<br />
Ext.menu.Adapter<br />
这个类是为了支持将非BaseItem子类的容器转换为支持baseitem的适配器,除了构造,与BaseItem无异<br />
Adapter( Ext.Component component, Object config ),可以自己再继承它做点实用的事, 他的两个子类更好用<br />
<br />
Ext.menu.ColorMenu<br />
提供颜色选择<br />
Ext.menu.DateItem<br />
提供日期选择<br />
<br />
Ext.menu.Item<br />
是BaseItem的另一个实用子类,提供一般的菜单项,支持菜单项之间的相互关系<br />
config{<br />
&nbsp;&nbsp;&nbsp;  canActivate : Boolean<br />
&nbsp;&nbsp;&nbsp;  href : String<br />
&nbsp;&nbsp;&nbsp;  hrefTarget : String<br />
&nbsp;&nbsp;&nbsp;  icon : String&nbsp;&nbsp;&nbsp;  //默认Ext.BLANK_IMAGE_URL,建议更改,extjs.com的确太慢了<br />
&nbsp;&nbsp;&nbsp;  iconCls : String<br />
&nbsp;&nbsp;&nbsp;  itemCls : String<br />
&nbsp;&nbsp;&nbsp;  showDelay : Number<br />
&nbsp;&nbsp;&nbsp;  text : String<br />
}<br />
方法<br />
Item( Object config )<br />
构造<br />
<br />
setIconClass( String cls ) : void<br />
setText( String text ) : void<br />
<br />
Ext.menu.CheckItem<br />
继承自Item,前面带有选择框的菜单项<br />
config{<br />
&nbsp;&nbsp;&nbsp;  checked : Boolean<br />
&nbsp;&nbsp;&nbsp;  group : String<br />
&nbsp;&nbsp;&nbsp;  groupClass : String&nbsp;&nbsp;&nbsp;  //默认x-menu-group-item<br />
&nbsp;&nbsp;&nbsp;  itemCls : String<br />
}<br />
<br />
方法<br />
CheckItem( Object config )<br />
构造<br />
<br />
checkHandler( Ext.menu.CheckItem this, Boolean checked ) : void<br />
选择处理方法<br />
<br />
setChecked( Boolean checked, [Boolean suppressEvent] ) : void<br />
设置选择状态<br />
<br />
事件<br />
beforecheckchange : ( Ext.menu.CheckItem this, Boolean checked )<br />
checkchange : ( Ext.menu.CheckItem this, Boolean checked )<br />
<br />
Ext.menu.Separator<br />
继承自item,间隔项<br />
<br />
Ext.menu.TextItem<br />
继承自item,文本项<br />
config{<br />
&nbsp;&nbsp;&nbsp;  hideOnClick : Boolean<br />
&nbsp;&nbsp;&nbsp;  itemCls : String<br />
&nbsp;&nbsp;&nbsp;  text : String<br />
}<br />
<br />
下面的示例从ext官方而来,继续简单的修改,只有menu相关部分.同样也都很简单<br />
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<p>Ext.QuickTips.init();</p>
<p>&nbsp;&nbsp;&nbsp;  //日期选择项点击事件<br />
&nbsp;&nbsp;&nbsp;  var dateMenu = new Ext.menu.DateMenu({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  handler : function(dp, date){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Date Selected', String.format('You chose {0}.', date.format('M j, Y')));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  });</p>
<p>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;  var colorMenu = new Ext.menu.ColorMenu({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  handler : function(cm,color){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Color Selected', String.format('You chose #{0}.', cm.palette.value));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  });</p>
<p>&nbsp;&nbsp;&nbsp;  var menu = new Ext.menu.Menu({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: 'mainMenu',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'I like Ext',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Ext for jQuery',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'I donated!',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked:false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }, '-', {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Radio Options',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  menu: {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  '&lt;b class="menu-title"&gt;Choose a Theme&lt;/b&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Aero Glass',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  group: 'theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }, {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Vista Black',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  group: 'theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }, {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Gray Theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  group: 'theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }, {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Default Theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  group: 'theme',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checkHandler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Choose a Date',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iconCls: 'calendar',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  menu: dateMenu<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Choose a Color',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  menu: colorMenu<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;  });</p>
<p>&nbsp;&nbsp;&nbsp;  var tb = new Ext.Toolbar();<br />
&nbsp;&nbsp;&nbsp;  tb.render(Ext.getBody());</p>
<p>&nbsp;&nbsp;&nbsp;  tb.add({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text:'Button w/ Menu',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iconCls: 'bmenu', // &lt;-- icon<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  menu: menu // assign menu by instance<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  );</p>
<p>&nbsp;&nbsp;&nbsp;  menu.addSeparator();<br />
&nbsp;&nbsp;&nbsp;  // Menus have a rich api for<br />
&nbsp;&nbsp;&nbsp;  // adding and removing elements dynamically<br />
&nbsp;&nbsp;&nbsp;  var item = menu.add({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Dynamically added Item'<br />
&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;&nbsp;  // items support full Observable API<br />
&nbsp;&nbsp;&nbsp;  item.on('click', onItemClick);</p>
<p>&nbsp;&nbsp;&nbsp;  // items can easily be looked up<br />
&nbsp;&nbsp;&nbsp;  menu.add({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'Disabled Item',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: 'disableMe' // &lt;-- Items can also have an id for easy lookup<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // disabled: true&nbsp;&nbsp;  &lt;-- allowed but for sake of example we use long way below<br />
&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;&nbsp;  // access items by id or index<br />
&nbsp;&nbsp;&nbsp;  menu.items.get('disableMe').disable();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;  //这个增加子菜单的方法照猫画虎学的,至于add的到底是个什么?getXType得不到,item有私有的属性menu?<br />
&nbsp;&nbsp;&nbsp;  var ele=menu.add({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text:'submit',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  menu:{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {text:'submenu1',handler:onItemClick},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {text:'submenu2',handler:onItemClick}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;</p>
<p> </p>
<p>&nbsp;&nbsp;&nbsp;  // functions to display feedback<br />
&nbsp;&nbsp;&nbsp;  function onButtonClick(btn){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Button Click',String.format('You clicked the "{0}" button.', btn.text));<br />
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  function onItemClick(item){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Menu Click', String.format('You clicked the "{0}" menu item.', item.text));<br />
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  function onItemCheck(item, checked){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.MessageBox.alert('Item Check', String.format('You {1} the
"{0}" menu item.', item.text, checked ? 'checked' : 'unchecked'));<br />
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  function onItemToggle(item, pressed){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Button Toggled', String.format('Button "{0}" was toggled to {1}.', item.text, pressed));<br />
&nbsp;&nbsp;&nbsp;  }</p>
</div><img src ="http://www.blogjava.net/super2/aggbug/237580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:24 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十五)Ext.widgets-form(上) </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237578.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237578.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237578.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237578.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.form.BasicForm</span><br />
对应一个dom中的form,默认是用ajax提交的,如果的确想回传,可以使用如下方式<br />
var myForm. = new Ext.form.BasicForm("form-el-id", {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  onSubmit: Ext.emptyFn,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  submit: function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  this.getEl().dom.submit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  });<br />
<br />
方法:<br />
BasicForm( Mixed el, Object config )<br />
其中config配置为<br />
{<br />
baseParams : Object,&nbsp;&nbsp;&nbsp;  //请求时的附加参数,格式为{id: '123', foo: 'bar'}<br />
errorReader : DataReader,&nbsp;&nbsp;&nbsp;  //提交时发生验证错误,这个dataReader将会被使用<br />
fileUpload : Boolean,&nbsp;&nbsp;&nbsp;  //支持文件上传<br />
method : String,&nbsp;&nbsp;&nbsp;  //GET或者POST<br />
reader : DataReader,&nbsp;&nbsp;&nbsp;  //load时使用的数据读取器<br />
timeout : Number,&nbsp;&nbsp;&nbsp;  //超时时间<br />
trackResetOnLoad : Boolean,//支持使用reset方法恢复原始值<br />
url : String&nbsp;&nbsp;&nbsp;  //form要提交的url地址<br />
}<br />
<br />
add( Field field1, [Field field2], [Field etc] ) : BasicForm<br />
增加字段field1,field2,etc<br />
<br />
<br />
applyIfToFields( Object values ) : BasicForm<br />
applyToFields( Object values ) : BasicForm<br />
用传入的values呼叫Ext.applyIf/apply 方法<br />
<br />
clearInvalid() : BasicForm<br />
清除当前basicform中所有的非法信息<br />
<br />
doAction( String/Object actionName, [Object options] ) : BasicForm<br />
执行预定义的动作actionName,actionName类似"submit","load",也可以是自定义的动作的名字或一个Ext.form.Action的实例,options类似如下对象{<br />
url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  :String,<br />
method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  :String,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
params&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  :String/Object,&nbsp;&nbsp;  <br />
success&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  :Function,<br />
failure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  :Function,<br />
clientValidation :Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
}<br />
<br />
findField( String id ) : Field<br />
在当前form中查找id/dataindex/name等于传入的id的field对象<br />
<br />
getEl() : Ext.Element<br />
得到当前form对象的element对象<br />
<br />
<br />
getValues( Boolean asString ) : Object<br />
得到当前form的fields {name:value,name:values}json对象,如果有同名多值,value将是一个数组<br />
<br />
isDirty() : Boolean<br />
从初始载入后,是否有field被修改过<br />
<br />
isValid() : Boolean<br />
客户端验证成功?<br />
<br />
load( Object options ) : BasicForm<br />
等效于doAction('load',options);<br />
<br />
loadRecord( Record record ) : BasicForm<br />
从一个record对象取值到当前basicform<br />
<br />
markInvalid( Array/Object errors ) : BasicForm<br />
标志非法,[{id:'fieldId', msg:'The message'},...]这样格式的数组或者{id: msg, id2: msg2}格式的对象<br />
<br />
remove( Field field ) : BasicForm<br />
从basicform中移除field<br />
<br />
render() : BasicForm<br />
在basicForm的fields中寻找,利用id属性检查他们,然后用id属性呼叫applyTo方法<br />
<br />
reset() : BasicForm<br />
重置所有值<br />
<br />
setValues( Array/Object values ) : BasicForm<br />
设置值,参见getValues<br />
<br />
submit( Object options ) : BasicForm<br />
提交表单<br />
<br />
updateRecord( Record record ) : BasicForm<br />
利用当前更新record对象,参见loadRecord<br />
<br />
事件:<br />
actioncomplete : ( Form. this, Action action )<br />
actionfailed : ( Form. this, Action action )<br />
beforeaction : ( Form. this, Action action )<br />
<br />
<br />
<span style="color: #ff0000;">Ext.form.Field</span><br />
有了form之后,我们当然还需要field<br />
方法:<br />
Field( Object config )<br />
其中config设置为{<br />
&nbsp;&nbsp;&nbsp; autoCreate : String/Object,&nbsp;&nbsp;&nbsp; //一个{tag: "input", type: "text",
size: "20", autocomplete: "off"}这样的对象,或者选&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
择true,就是前面所说的那个固定内置对象<br />
&nbsp;&nbsp;&nbsp;  clearCls : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //,默认x-form-clear-left<br />
&nbsp;&nbsp;&nbsp;  cls : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //默认样式<br />
&nbsp;&nbsp;&nbsp;  disabled : Boolean,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  fieldClass : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //x-form-field<br />
&nbsp;&nbsp;&nbsp;  fieldLabel : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  focusClass : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //x-form-focus<br />
&nbsp;&nbsp;&nbsp;  hideLabel : Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //隐藏前导标签<br />
&nbsp;&nbsp;&nbsp;  inputType : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //input type="???"<br />
&nbsp;&nbsp;&nbsp;  invalidClass : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //x-form-invalid<br />
&nbsp;&nbsp;&nbsp;  invalidText : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  itemCls :String<br />
&nbsp;&nbsp;&nbsp;  labelSeparator : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //分隔符<br />
&nbsp;&nbsp;&nbsp;  msgFx : String<br />
&nbsp;&nbsp;&nbsp;  msgTarget : String<br />
&nbsp;&nbsp;&nbsp;  name : String<br />
&nbsp;&nbsp;&nbsp;  readOnly : Boolean<br />
&nbsp;&nbsp;&nbsp;  tabIndex : Number<br />
&nbsp;&nbsp;&nbsp;  validateOnBlur : Boolean&nbsp;&nbsp;&nbsp;  //true<br />
&nbsp;&nbsp;&nbsp;  validationDelay : Number&nbsp;&nbsp;&nbsp;  //250<br />
&nbsp;&nbsp;&nbsp;  validationEvent : String/Boolean&nbsp;&nbsp;&nbsp;  //KeyUP<br />
&nbsp;&nbsp;&nbsp;  value : Mixed<br />
}<br />
<br />
构造很麻烦的,但还好我们一般不会直接使用field<br />
<br />
clearInvalid() : void<br />
清除非法信息<br />
<br />
getName() : String<br />
getRawValue() : Mixed<br />
getValue() : Mixed<br />
isDirty() : void<br />
isValid( Boolean preventMark ) : Boolean<br />
markInvalid( String msg ) : void<br />
reset() : void<br />
setRawValue( Mixed value ) : void<br />
setValue( Mixed value ) : void<br />
validate() : Boolean<br />
<br />
都很简单也略过了<br />
事件<br />
blur : ( Ext.form.Field this )<br />
change : ( Ext.form.Field this, Mixed newValue, Mixed oldValue )<br />
focus : ( Ext.form.Field this )<br />
invalid : ( Ext.form.Field this, String msg )<br />
specialkey : ( Ext.form.Field this, Ext.EventObject e )<br />
valid : ( Ext.form.Field this )<br />
<br />
<span style="color: #ff0000;">Ext.form.Checkbox</span><br />
继承自Field, 复选框<br />
<br />
Checkbox( Object config )<br />
构造,其中config{<br />
&nbsp;&nbsp;&nbsp;  autoCreate : String/Object,<br />
&nbsp;&nbsp;&nbsp;  boxLabel : String,<br />
&nbsp;&nbsp;&nbsp;  checked : Boolean,<br />
&nbsp;&nbsp;&nbsp;  fieldClass : String,//x-form-field<br />
&nbsp;&nbsp;&nbsp;  focusClass : String,<br />
}<br />
<br />
getValue() : Boolean<br />
initComponent() : void<br />
setValue( Boolean/String checked ) : void<br />
<br />
事件<br />
check : ( Ext.form.Checkbox this, Boolean checked )<br />
<br />
<span style="color: #ff0000;">Ext.form.Radio</span><br />
继承自Ext.form.Checkbox,单选框<br />
多了一个方法<br />
getGroupValue() : String<br />
如果单选框是一组radio 的一部分,取当前选中的值<br />
<br />
Ext.form.Hidden<br />
继承自Field,隐藏字段,无新特性<br />
<br />
<br />
<span style="color: #ff0000;">Ext.form.HtmlEditor</span><br />
继承自Field,这个htmleditor功能太简单了,什么人能扩充一下就好了<br />
<br />
config定义{<br />
createLinkText : String&nbsp;&nbsp;&nbsp;  //<br />
defaultLinkValue : String&nbsp;&nbsp;&nbsp;  // http://<br />
enableAlignments : Boolean<br />
enableColors : Boolean<br />
enableFont : Boolean<br />
enableFontSize : Boolean<br />
enableFormat : Boolean<br />
enableLinks : Boolean<br />
enableLists : Boolean<br />
enableSourceEdit : Boolean<br />
fontFamilies : Array&nbsp;&nbsp;&nbsp;  //这个当然要用汉字的字体组成的数组了<br />
}<br />
<br />
方法<br />
<br />
cleanHtml( String html ) : void<br />
createToolbar( HtmlEditor editor ) : void<br />
execCmd( String cmd, [String/Boolean value] ) : void<br />
getDocMarkup() : void<br />
getToolbar() : Ext.Toolbar<br />
insertAtCursor( String text ) : void<br />
pushValue() : void<br />
relayCmd( String cmd, [String/Boolean value] ) : void<br />
syncValue() : void<br />
toggleSourceEdit( [Boolean sourceEdit] ) : void<br />
updateToolbar() : void<br />
<br />
<br />
要提一点的是,要使用HtmlEditor,别忘了先Ext.QuickTips.init();<br />
<br />
<br />
<br />
<span style="color: #ff0000;">Ext.form.TextField</span><br />
config{<br />
&nbsp;&nbsp;&nbsp;  allowBlank : Boolean&nbsp;&nbsp;&nbsp;  //允许为空<br />
&nbsp;&nbsp;&nbsp;  blankText : String&nbsp;&nbsp;&nbsp;  //如果为空验证错误时的提示文字 ,默认This field is required<br />
&nbsp;&nbsp;&nbsp;  disableKeyFilter : Boolean<br />
&nbsp;&nbsp;&nbsp;  emptyClass : String<br />
&nbsp;&nbsp;&nbsp;  emptyText : String<br />
&nbsp;&nbsp;&nbsp;  grow : Boolean&nbsp;&nbsp;&nbsp;  // 自动生长?,如果需要,会加宽当前input type="text"<br />
&nbsp;&nbsp;&nbsp;  growMax : Number<br />
&nbsp;&nbsp;&nbsp;  growMin : Number<br />
&nbsp;&nbsp;&nbsp;  maskRe : RegExp&nbsp;&nbsp;&nbsp;  //仅允许输入与maskRe匹配的按键<br />
&nbsp;&nbsp;&nbsp;  maxLength : Number<br />
&nbsp;&nbsp;&nbsp;  maxLengthText : String&nbsp;&nbsp;&nbsp;  //超出最大长度时提示文本<br />
&nbsp;&nbsp;&nbsp;  minLength : Number<br />
&nbsp;&nbsp;&nbsp;  minLengthText : String&nbsp;&nbsp;&nbsp;  //不够最小长度时提示信息<br />
&nbsp;&nbsp;&nbsp;  regex : RegExp&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //正则匹配<br />
&nbsp;&nbsp;&nbsp;  regexText : String&nbsp;&nbsp;&nbsp;  //提示<br />
&nbsp;&nbsp;&nbsp;  selectOnFocus : Boolean<br />
&nbsp;&nbsp;&nbsp;  validator : Function&nbsp;&nbsp;&nbsp;  //自定义验证方法,接受当前字段的值,如果合法,返回真,反之返回自定义信息<br />
&nbsp;&nbsp;&nbsp;  vtype : String&nbsp;&nbsp;&nbsp;  //Ext.form.VTypes 中定义的vtype类型名,支持简单的类型验证<br />
&nbsp;&nbsp;&nbsp;  vtypeText : String//如果不是,则提示<br />
}<br />
<br />
方法:<br />
TextField( Object config )<br />
构造<br />
<br />
autoSize() : void<br />
自动尺寸<br />
<br />
reset() : void<br />
重置<br />
<br />
selectText( [Number start], [Number end] ) : void<br />
选择文本<br />
<br />
validateValue( Mixed value ) : Boolean<br />
验证值<img src ="http://www.blogjava.net/super2/aggbug/237578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:23 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十六)Ext.widgets-form(下) </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237579.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237579.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237579.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237579.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.form.NumberField</span><br />
继承自Ext.form.TextField,因为Ext.form.TextField虽然强大,但写起来的确还是有点麻烦,后面的类都继承自Ext.form.TextField,没有自定义的方法,属性和事件<br />
<br />
config定义为{<br />
&nbsp;&nbsp;&nbsp;  allowDecimals : Boolean&nbsp;&nbsp;&nbsp;  //true<br />
&nbsp;&nbsp;&nbsp;  allowNegative : Boolean&nbsp;&nbsp;&nbsp;  //true<br />
&nbsp;&nbsp;&nbsp;  baseChars : String&nbsp;&nbsp;&nbsp;  //'0123456789'<br />
&nbsp;&nbsp;&nbsp;  decimalPrecision : Number&nbsp;&nbsp;&nbsp;  //精度,默认值2<br />
&nbsp;&nbsp;&nbsp;  decimalSeparator : String&nbsp;&nbsp;&nbsp;  //小数分隔符<br />
&nbsp;&nbsp;&nbsp;  fieldClass : String&nbsp;&nbsp;&nbsp;  //默认样式为x-form-field x-form-num-field<br />
&nbsp;&nbsp;&nbsp;  maxText : String<br />
&nbsp;&nbsp;&nbsp;  maxValue : Number&nbsp;&nbsp;&nbsp;  //默认Number.MAX_VALUE<br />
&nbsp;&nbsp;&nbsp;  minText : String<br />
&nbsp;&nbsp;&nbsp;  minValue : Number&nbsp;&nbsp;&nbsp;  //默认Number.NEGATIVE_INFINITY<br />
&nbsp;&nbsp;&nbsp;  nanText : String&nbsp;&nbsp;&nbsp;  //NaN时显示?<br />
}<br />
<br />
<span style="color: #ff0000;">Ext.form.TextArea</span><br />
<br />
config{<br />
&nbsp;&nbsp;&nbsp;  autoCreate : String/Object&nbsp;&nbsp;&nbsp;  //{tag: "textarea", style. "width:100px;height:60px;", autocomplete: "off"}<br />
&nbsp;&nbsp;&nbsp;  growMax : Number&nbsp;&nbsp;&nbsp;  //1000<br />
&nbsp;&nbsp;&nbsp;  growMin : Number&nbsp;&nbsp;&nbsp;  //60<br />
&nbsp;&nbsp;&nbsp;  preventScrollbars : Boolean&nbsp;&nbsp;&nbsp;  //如果为真等于设置overflow: hidden,默认为false<br />
}<br />
<br />
<span style="color: #ff0000;">Ext.form.TriggerField</span><br />
这个类只要text旁边加了个下拉按钮,要自己实现onTriggerClick<br />
config{<br />
&nbsp;&nbsp;&nbsp;  autoCreate : String/Object,&nbsp;&nbsp;&nbsp;  //{tag: "input", type: "text", size: "16", autocomplete: "off"}<br />
&nbsp;&nbsp;&nbsp;  hideTrigger : Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //隐藏trigger,就是右边的那个下拉选择框<br />
&nbsp;&nbsp;&nbsp;  triggerClass : String<br />
<br />
}<br />
事件<br />
onTriggerClick( EventObject e ) : void<br />
<br />
<br />
<span style="color: #ff0000;">Ext.form.DateField</span><br />
继承自TriggerField,用于日期选择<br />
<br />
config{<br />
&nbsp;&nbsp;&nbsp;  altFormats : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //转换用户输入到日期时的格式,默认'm/d/Y|m-d-y|m-d-Y|m/d|m-d|d'<br />
&nbsp;&nbsp;&nbsp;  autoCreate : String/Object&nbsp;&nbsp;&nbsp;  //{tag: "input", type: "text", size: "10", autocomplete: "off"}<br />
&nbsp;&nbsp;&nbsp;  disabledDates : Array&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //禁止选择的日期:例 ["^03","04/../2006","09/16/2003"],不让选3月,2006年4月,2003年9月16<br />
&nbsp;&nbsp;&nbsp;  disabledDatesText : String&nbsp;&nbsp;&nbsp;  //不让选总得给个理由吧<br />
&nbsp;&nbsp;&nbsp;  disabledDays : Array&nbsp;&nbsp;&nbsp;  //不让选星期几,例[0,6],不让选周六,周日<br />
&nbsp;&nbsp;&nbsp;  disabledDaysText : String&nbsp;&nbsp;&nbsp;  //周日要休息,这就是理由<br />
&nbsp;&nbsp;&nbsp;  format : String&nbsp;&nbsp;&nbsp;  //显示时的格式<br />
&nbsp;&nbsp;&nbsp;  invalidText : String&nbsp;&nbsp;&nbsp;  //验证非法时的提示<br />
&nbsp;&nbsp;&nbsp;  maxText : String<br />
&nbsp;&nbsp;&nbsp;  maxValue : Date/String<br />
&nbsp;&nbsp;&nbsp;  minText : String<br />
&nbsp;&nbsp;&nbsp;  minValue : Date/String<br />
&nbsp;&nbsp;&nbsp;  triggerClass : String<br />
}<br />
<br />
方法,除了构造,多了两个顾名思义的方法<br />
DateField( Object config )<br />
getValue() : Date<br />
setValue( String/Date date ) : void<br />
<br />
<br />
<br />
<span style="color: #ff0000;">Ext.form.ComboBox</span><br />
config{<br />
&nbsp;&nbsp;&nbsp;  allQuery : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //''<br />
&nbsp;&nbsp;&nbsp;  autoCreate : Boolean/Object&nbsp;&nbsp;&nbsp;  //{tag: "input", type: "text", size: "24", autocomplete: "off"}<br />
&nbsp;&nbsp;&nbsp;  displayField : String&nbsp;&nbsp;&nbsp;  //显示字段<br />
&nbsp;&nbsp;&nbsp;  editable : Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //true当然就是combobox了,如果不可编辑就是一个select了<br />
&nbsp;&nbsp;&nbsp;  forceSelection : Boolean<br />
&nbsp;&nbsp;&nbsp;  handleHeight : Number&nbsp;&nbsp;&nbsp;  //如果resiable为真时,设置<br />
&nbsp;&nbsp;&nbsp;  hiddenName : String<br />
&nbsp;&nbsp;&nbsp;  lazyInit : Boolean&nbsp;&nbsp;&nbsp;  //除非得到焦点才开始初始化列表,默认为真<br />
&nbsp;&nbsp;&nbsp;  lazyRender : Boolean&nbsp;&nbsp;&nbsp;  //除非请求,才开始输出,默认为假<br />
&nbsp;&nbsp;&nbsp;  listAlign : String&nbsp;&nbsp;&nbsp;  //对齐方式,参见Ext.Element.alignTo,默认为'tl-bl'<br />
&nbsp;&nbsp;&nbsp;  listClass : String<br />
&nbsp;&nbsp;&nbsp;  listWidth : Number<br />
&nbsp;&nbsp;&nbsp;  loadingText : String&nbsp;&nbsp;&nbsp;  //仅当mode = 'remote'时调用数据时显示的文本<br />
&nbsp;&nbsp;&nbsp;  maxHeight : Number&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //300<br />
&nbsp;&nbsp;&nbsp;  minChars : Number&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //最少输入多少个字开始响应,远程时默认为4,本地为0,如果不可编辑则此值无效<br />
&nbsp;&nbsp;&nbsp;  minListWidth : Number<br />
&nbsp;&nbsp;&nbsp;  mode : String&nbsp;&nbsp;&nbsp;  //可选值local/remote之一,从本地还是远程取数据<br />
&nbsp;&nbsp;&nbsp;  pageSize : Number&nbsp;&nbsp;&nbsp;  //在远程模式下,如果此值大于0会在底部显示一个翻页工具条<br />
&nbsp;&nbsp;&nbsp;  queryDelay : Number&nbsp;&nbsp;&nbsp;  //查询延时,远程默认为500,本地10<br />
&nbsp;&nbsp;&nbsp;  queryParam : String&nbsp;&nbsp;&nbsp;  //查询参数,默认为query<br />
&nbsp;&nbsp;&nbsp;  resizable : Boolean<br />
&nbsp;&nbsp;&nbsp;  selectOnFocus : Boolean<br />
&nbsp;&nbsp;&nbsp;  selectedClass : String<br />
&nbsp;&nbsp;&nbsp;  shadow : Boolean/String&nbsp;&nbsp;&nbsp;  //True或"sides"为默认风格, "frame" for 4-way shadow, and "drop" for bottom-right<br />
&nbsp;&nbsp;&nbsp;  store : Ext.data.Store<br />
&nbsp;&nbsp;&nbsp;  title : String<br />
&nbsp;&nbsp;&nbsp;  transform. Mixed&nbsp;&nbsp;&nbsp;  //对应一个select元素,可以将select转为combobox对象<br />
&nbsp;&nbsp;&nbsp;  triggerAction : String&nbsp;&nbsp;&nbsp;  //点击按钮时的动作.默认为query<br />
&nbsp;&nbsp;&nbsp;  triggerClass : String<br />
&nbsp;&nbsp;&nbsp;  typeAhead : Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //false<br />
&nbsp;&nbsp;&nbsp;  typeAheadDelay : Number&nbsp;&nbsp;&nbsp;  //250<br />
&nbsp;&nbsp;&nbsp;  valueField : String<br />
&nbsp;&nbsp;&nbsp;  valueNotFoundText : String&nbsp;&nbsp;&nbsp;  //值不存在时的提示信息<br />
}<br />
<br />
属性<br />
view : Ext.DataView<br />
<br />
方法<br />
ComboBox( Object config )<br />
构造<br />
<br />
clearValue() : void<br />
清除所有文本/值对<br />
<br />
collapse() : void<br />
expand() : void<br />
收起/展开下拉列表<br />
<br />
doQuery( String query, Boolean forceAll ) : void<br />
执行查询<br />
<br />
getValue() : String<br />
选择当前字段的值<br />
<br />
isExpanded() : void<br />
下拉列表是展开的?<br />
<br />
select( Number index, Boolean scrollIntoView ) : void<br />
选中第index列表项<br />
<br />
selectByValue( String value, Boolean scrollIntoView ) : Boolean<br />
选中值为value的列表项<br />
<br />
setEditable( Boolean value ) : void<br />
设editable属性为value<br />
<br />
setValue( String value ) : void<br />
设置当前值为<br />
<br />
事件<br />
beforequery : ( Object queryEvent )<br />
beforeselect : ( Ext.form.ComboBox combo, Ext.data.Record record, Number index )<br />
collapse : ( Ext.form.ComboBox combo )<br />
expand : ( Ext.form.ComboBox combo )<br />
select : ( Ext.form.ComboBox combo, Ext.data.Record record, Number index )<br />
<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.form.TimeField</span><br />
继承自combobox,用于选择时间<br />
config{<br />
&nbsp;&nbsp;&nbsp;  altFormats : String&nbsp;&nbsp;&nbsp;  //<br />
&nbsp;&nbsp;&nbsp;  format : String<br />
&nbsp;&nbsp;&nbsp;  increment : Number&nbsp;&nbsp;&nbsp;  //时间增长间隔,默认15<br />
&nbsp;&nbsp;&nbsp;  invalidText : String<br />
&nbsp;&nbsp;&nbsp;  maxText : String<br />
&nbsp;&nbsp;&nbsp;  maxValue : Date/String<br />
&nbsp;&nbsp;&nbsp;  minText : String<br />
&nbsp;&nbsp;&nbsp;  minValue : Date/String<br />
}<br />
<br />
总 的来说Ext.form对input type='text' select
这样的输入标签都有对应的类,并对有些标签做了简单的扩展,当然很重要的一点,漂亮多了,vtype属性也方便了处理,建议有兴趣的同胞对
Ext.form.VTypes和Ext.form.HtmlEditor做一些扩展<br />
form中还有两个类,比如下例中的FormPanel和FieldSet,<br />
都继承自panel,所以会放在panel中解释<br />
<br />
综合示例<br />
&nbsp;&nbsp;&nbsp;
<p>Ext.QuickTips.init();<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var arr=[ [1, '本.拉登'], [2, '笨.拉登'],[3, '笨.拉灯'] ];<br />
&nbsp;&nbsp;&nbsp;  var reader = new Ext.data.ArrayReader(<br />
&nbsp;&nbsp;  {id: 0},<br />
&nbsp;&nbsp;  [<br />
&nbsp;&nbsp;&nbsp;  {name: 'value'},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  {name: 'key'}&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ]);<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var store=new Ext.data.Store({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader<br />
&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;  store.loadData(arr);<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var htmleditor=new Ext.form.HtmlEditor({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'htmleditor',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width:450,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fontFamilies:['宋体','隶书'],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'editor',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id:'editor'<br />
&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var form. = new Ext.FormPanel({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  labelWidth: 75,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <a href="http://www.gzxishui.gov.cn/xspace/%27post.php%27">url:'post.php'</a>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  frame.:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width: 800,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  defaultType: 'textfield',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.Checkbox({&nbsp;&nbsp;&nbsp;&nbsp;  //checkbox<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'checkbox',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'cb',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boxLabel:'checkbox'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.FieldSet({ //radio<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  border:false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  title:'radio',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  items:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.Radio({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  labelSeparator:'',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'radio',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boxLabel:'radio 1'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.Radio({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  labelSeparator:'',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'radio',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boxLabel:'radio 2'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.Hidden({&nbsp;&nbsp;  //hidden<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'hidden'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  htmleditor,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.TextField({ //text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'text',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'text',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  grow:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  allowBlank:false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  blankText : "这个字段最好不要为空",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  maskRe:/[a-zA-z]/gi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.NumberField({ //NumberField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  allowNegative:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'number',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'number'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.TextArea({&nbsp;&nbsp;&nbsp;  //TextArea<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'textarea',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'textarea'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.TriggerField({ //TriggerField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'TriggerField',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  name:'TriggerField'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.ComboBox({ //select<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'select',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  editable:false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  triggerAction: 'all',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  valueField:'value',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  displayField:'key',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mode: 'local',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  store:store<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.ComboBox({ //combobox<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'ComboBox',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  displayField:'key',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mode: 'local',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  store:store<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.DateField({ //DateField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'DateField',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  format:'Y-m-d',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  disabledDays:[0,6]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  new Ext.form.TimeField({//TimeField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fieldLabel:'TimeField',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mode: 'local',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  increment:60<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  });<br />
form.render(document.body);</p>
htmleditor.setRawValue("&lt;h1&gt;hello world&lt;/h1&gt;");<br />
htmleditor.syncValue();<img src ="http://www.blogjava.net/super2/aggbug/237579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:23 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十四)Ext.widgets-Button,SplitButton,CycleButton</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237577.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:22:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237577.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237577.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237577.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237577.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt"><span style="color: #ff0000;">Ext.Action</span><br />
action实现一个脱离了容 器的事件,所有它可以在多个容器之间共享,不过好象只有Ext.Toolbar, Ext.Button 和
Ext.menu.Menu支持action接口:),因为容器要实现下面所有的方法setText(string),
setIconCls(string), setDisabled(boolean), setVisible(boolean) and
setHandler(function)<br />
<br />
方法:<br />
Action( Object config )<br />
构造,config定义为{<br />
disabled : Boolean,//禁止使用<br />
handler : Function,//事件句柄<br />
hidden : Boolean,//隐藏<br />
iconCls : String,//样式类<br />
scope : Object, //handler将在哪个范围内执行<br />
text : String //文本<br />
}<br />
<br />
disable() : void<br />
enable() : void<br />
setDisabled( Boolean disabled ) : void<br />
禁止/允许<br />
<br />
each( Function fn, Object scope ) : void<br />
为每个实现了此action的componet应用fn<br />
<br />
hide() : void<br />
show() : void<br />
setHidden( Boolean hidden ) : void<br />
显示/隐藏<br />
<br />
setHandler( Function fn, Object scope ) : void<br />
setIconClass( String cls ) : void<br />
setText( String text ) : void<br />
重新设置config配置的属性值<br />
<br />
示例:<br />
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><span style="color: #0000ff;">
<div>function onItemCheck(item){<br />
Ext.MessageBox.alert("点击事件",String.format("您选择了{0}",item.text));<br />
}<br />
function showMenu(obj){<br />
Ext.MessageBox.alert("点击下拉",obj.getXTypes() )<br />
}</div>
<div>Ext.QuickTips.init();<br />
var button=new Ext.SplitButton({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  arrowHandler : showMenu,<br />
&nbsp;&nbsp;&nbsp;  handler: onItemCheck,<br />
&nbsp;&nbsp;&nbsp;  arrowTooltip : "更多",<br />
&nbsp;&nbsp;&nbsp;  text:'按我',<br />
&nbsp;&nbsp;&nbsp;  menu:'mainMenu'<br />
});</div>
</span></div>
</div>
<br />
<br />
<br />
<span style="color: #ff0000;">Ext.Button</span><br />
简单的按钮类<br />
<br />
<br />
公有属性:<br />
disabled : Boolean<br />
允许?<br />
hidden : Boolean<br />
隐藏?<br />
pressed : Boolean<br />
按下?<br />
<br />
方法 [继承来的忽略]<br />
Button( Object config )<br />
构造可选config{<br />
clickEvent : String,&nbsp;&nbsp;&nbsp;  //handler响应的事件,默认是click<br />
cls : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //样式<br />
disabled : Boolean,&nbsp;&nbsp;&nbsp;  //禁止<br />
enableToggle : Boolean,//允许在按下没按下之间切换,添加移除x-btn-pressed样式类<br />
handleMouseEvents : Boolean,//允许使用移入移出按下事件,默认是真<br />
handler : Function,&nbsp;&nbsp;&nbsp;  //响应clickEvent定义的事件<br />
hidden : Boolean,&nbsp;&nbsp;&nbsp;  //隐藏<br />
icon : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //图标文件地址,如果修改x-btn-text-icon样式类可以重定义默认icon<br />
iconCls : String,&nbsp;&nbsp;&nbsp;  //和icon功能类似,但使用设定了background-image属性的样式定义<br />
menu : Mixed&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //如果需要,可以为按钮定义菜单<br />
menuAlign : String,&nbsp;&nbsp;&nbsp;  //菜单对齐方式,默认值是tl-bl<br />
minWidth : Number,&nbsp;&nbsp;&nbsp;  //最小宽度<br />
pressed : Boolean,&nbsp;&nbsp;&nbsp;  //是否按下<br />
repeat : Boolean/Object,//是否需要重复定义鼠标按下事件,也可以是一个Ext.util.ClickRepeater配置对象<br />
scope : Object,&nbsp;&nbsp;&nbsp;  //handler事件的范围<br />
tabIndex : Number,&nbsp;&nbsp;&nbsp;  //table键顺序<br />
text : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //文本<br />
toggleGroup : String,&nbsp;&nbsp;&nbsp;  //如果定义一组enableToggle为真且toggleGroup值相同的button对象,这些对象同一时间内将只有一个处于按下状态<br />
tooltip : String/Object, //提示信息,可以是一个字符串或QuickTips的配置对象<br />
tooltipType : String,&nbsp;&nbsp;&nbsp;  //可选值"qtip"(默认)或"title"之一<br />
type : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //可选值"submit"/"reset"/"button"(默认)之一<br />
}<br />
<br />
<br />
focus() : void<br />
//得到焦点<br />
<br />
getText() : String<br />
//取得文本<br />
<br />
hasVisibleMenu() : Boolean<br />
//有可视的菜单?<br />
hideMenu() : void<br />
//隐藏菜单<br />
initComponent() : void<br />
//初始化容器<br />
setHandler( Function handler, [Object scope] ) : void<br />
//设置事件处理方法<br />
setText( String text ) : void<br />
//设置文本<br />
showMenu() : void<br />
//显示菜单<br />
toggle( [Boolean state] ) : void<br />
//切换按下状态<br />
<br />
<br />
示例:<br />
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff;"><font color="#000000">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />
&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>" &gt;<br />
&lt;head&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;title&gt;Untitled Page&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;link rel="stylesheet" rev="stylesheet" href="/css/ext-all.css" type="text/css" media="all" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;script. type="text/javascript" src="/scripts/adapter/ext/ext-base.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;script. type="text/javascript" src="/scripts/ext-all.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;style. type="text/css"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  /*--加入样式背景好直观一点*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;  .x-btn-pressed button{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  background-color:red;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/style&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;script. type="text/javascript"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;  Ext.onReady(function(){<br />
&nbsp;&nbsp;&nbsp;  <br />
//有菜单的按钮<br />
&nbsp;&nbsp;&nbsp;  function onItemCheck(item){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert("点击事件",String.format("您选择了{0}",item.text));<br />
&nbsp;&nbsp;&nbsp;  }<br />
var menu = new Ext.menu.Menu({<br />
&nbsp;&nbsp;&nbsp;  id: 'mainMenu',<br />
&nbsp;&nbsp;&nbsp;  items: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'menu1',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  handler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text: 'menu2',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  handler: onItemCheck<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }]<br />
});</font></span></div>
<div><span style="color: #0000ff;"><font color="#000000">var button=new Ext.Button({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  text:'按我',<br />
&nbsp;&nbsp;&nbsp;  menu:'mainMenu'<br />
});</font></span></div>
<div><span style="color: #0000ff;"><font color="#000000">//有状态的探钮<br />
new Ext.Button({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  text:'toggle button ',<br />
&nbsp;&nbsp;&nbsp;  enableToggle:true<br />
});</font></span></div>
<div><span style="color: #0000ff;"><font color="#000000">//分组的有状态按钮<br />
new Ext.Button({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  text:'toggle button 1',<br />
&nbsp;&nbsp;&nbsp;  enableToggle:true,<br />
&nbsp;&nbsp;&nbsp;  toggleGroup:'toggleGroup',<br />
&nbsp;&nbsp;&nbsp;  handler: onItemCheck<br />
});</font></span></div>
<span style="color: #0000ff;">
<div><font color="#000000"><br />
new Ext.Button({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  text:'toggle button 2',<br />
&nbsp;&nbsp;&nbsp;  enableToggle:true,<br />
&nbsp;&nbsp;&nbsp;  toggleGroup:'toggleGroup',<br />
&nbsp;&nbsp;&nbsp;  handler: onItemCheck<br />
});</font></div>
<div><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;</font></div>
<div><font color="#000000">&lt;/body&gt;<br />
&lt;/html&gt;</font></div>
</span></div>
<br />
<br />
<span style="color: #ff0000;">Ext.SplitButton</span><br />
上例中的带菜单按钮还不专业,于是有了Ext.SplitButton,专门为带有下拉菜单的按钮设计的<br />
<br />
<br />
方法:<br />
SplitButton( Object config )<br />
构造,config中加入了{<br />
arrowHandler : Function,<br />
arrowTooltip : String<br />
}<br />
<br />
setArrowHandler( Function handler, [Object scope] ) : void<br />
设置下拉箭头的点击事件<br />
<br />
事件:<br />
arrowclick : ( MenuButton this, EventObject e )<br />
<br />
<br />
使用示例:<br />
比如上例中的菜单按钮可以改为<br />
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<p>function onItemCheck(item){<br />
Ext.MessageBox.alert("点击事件",String.format("您选择了{0}",item.text));<br />
}<br />
function showMenu(obj){<br />
Ext.MessageBox.alert("点击下拉",obj.getXTypes() )<br />
}</p>
<p>Ext.QuickTips.init();<br />
var button=new Ext.SplitButton({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  arrowHandler : showMenu,<br />
&nbsp;&nbsp;&nbsp;  handler: onItemCheck,<br />
&nbsp;&nbsp;&nbsp;  arrowTooltip : "更多",<br />
&nbsp;&nbsp;&nbsp;  text:'按我',<br />
&nbsp;&nbsp;&nbsp;  menu:'mainMenu'<br />
});</p>
</div>
<br />
<span style="color: #ff0000;">Ext.CycleButton</span><br />
这是一个SplitButton的实用子类,用于在多个item之间切换状态,当然它也会带有menu可供选择,也可以直接点击按键在item之间切换<br />
<br />
<br />
<br />
<br />
方法:<br />
CycleButton( Object config )<br />
构造,config新增配置项{<br />
changeHandler : Function,&nbsp;&nbsp;&nbsp;  //状态切换时的处理事件<br />
items : Array, //items应该是menu item的数组<br />
prependText : String,&nbsp;&nbsp;&nbsp;  //前导text<br />
showText : Boolean,&nbsp;&nbsp;&nbsp;  //追加item的text到按钮显示<br />
}<br />
<br />
getActiveItem() : Ext.menu.CheckItem<br />
setActiveItem( Ext.menu.CheckItem item, Boolean suppressEvent ) : void<br />
得到/设置活动选项<br />
toggleSelected() : void<br />
切换选择项,相当于点击一次按钮<br />
<br />
示例<br />
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">new Ext.CycleButton({<br />
&nbsp;&nbsp;&nbsp;  renderTo:Ext.getBody(),<br />
&nbsp;&nbsp;&nbsp;  showText: true,<br />
&nbsp;&nbsp;&nbsp;  prependText: 'View as ',<br />
&nbsp;&nbsp;&nbsp;  items: [{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text:'text only',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iconCls:'view-text',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  checked:true<br />
&nbsp;&nbsp;&nbsp;  },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text:'HTML',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iconCls:'view-html'<br />
&nbsp;&nbsp;&nbsp;  },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  text:'XML',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  iconCls:'view-html'<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  ],<br />
&nbsp;&nbsp;&nbsp;  changeHandler:function(btn, item){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.MessageBox.alert('Change View', item.text);<br />
&nbsp;&nbsp;&nbsp;  }<br />
});</div>
</div><img src ="http://www.blogjava.net/super2/aggbug/237577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:22 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十二)Ext.data-GroupingStore/JsonStore/SimpleStore javascript </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237575.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:21:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237575.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237575.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237575.html</trackback:ping><description><![CDATA[Ext.data.GroupingStore<br />
继承自Ext.data.Store,为Store增加了分组功能.其它用法与Store一致,惟一需要注意的是使用GroupingStore时必须指定sortInfo信息<br />
增加了配置属性<br />
groupField : String//用于分组的字段<br />
groupOnSort : Boolean//如果为真,将依排序字段重新分组,默认为假<br />
remoteGroup : Boolean//远程排序<br />
当然也会多一个group方法<br />
groupBy( String field, [Boolean forceRegroup] ) : void<br />
顾名思义都是重新排序用的<br />
<br />
下面是个简单的示例<br />
<br />
var arr=[ [1, '本', '拉登'], [2, '笨', '拉登'],[3, '笨', '拉灯'] ];<br />
&nbsp;&nbsp;&nbsp;  var reader = new Ext.data.ArrayReader(<br />
&nbsp;&nbsp;  ...{id: 0},<br />
&nbsp;&nbsp;  [<br />
&nbsp;&nbsp;&nbsp;  ...{name: 'name', mapping: 1},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ...{name: 'occupation', mapping: 2}&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ]);<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var store=new Ext.data.GroupingStore(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupField:'name',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupOnSort:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sortInfo:...{field: 'occupation', direction: "ASC"} //使用GroupingStore时必须指定sortInfo信息<br />
&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;  store.loadData(arr);<br />
<br />
&nbsp;&nbsp;  //GridPanel以后会讨论,这儿使用它是为了直观的表现GroupingStore<br />
&nbsp;&nbsp;  var grid = new Ext.grid.GridPanel(...{<br />
&nbsp;&nbsp;&nbsp;  ds: store,<br />
&nbsp;&nbsp;&nbsp;  columns: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "name", width: 20, sortable: true,dataIndex: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'}<br />
&nbsp;&nbsp;&nbsp;  ],<br />
&nbsp;&nbsp;&nbsp;  view: new Ext.grid.GroupingView(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  forceFit:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length &gt; 1 ? "Items" : "Item"]})'<br />
&nbsp;&nbsp;&nbsp;  }),<br />
&nbsp;&nbsp;&nbsp;  frame.:true,<br />
&nbsp;&nbsp;&nbsp;  width: 700,<br />
&nbsp;&nbsp;&nbsp;  height: 450,<br />
&nbsp;&nbsp;&nbsp;  collapsible: true,<br />
&nbsp;&nbsp;&nbsp;  animCollapse: false,<br />
&nbsp;&nbsp;&nbsp;  title: 'Grouping Example',<br />
&nbsp;&nbsp;&nbsp;  renderTo: 'Div_GridPanel'<br />
&nbsp;&nbsp;&nbsp;  });<br />
<br />
Ext.data.JsonStore<br />
也是Store子类,目标是更方便的使用json对象做数据源<br />
构造中多了fields,root,用法如下例所示<br />
/**//*<br />
这是使用远程对象,返回内容与下面本地对象的data一致<br />
var store=new Ext.data.JsonStore({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  url:'jsoncallback.js',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  root:'rows',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fields:['id','name','occupation']<br />
&nbsp;&nbsp;&nbsp;  });<br />
&nbsp;&nbsp;&nbsp;  store.load();<br />
*/<br />
&nbsp;&nbsp;&nbsp;  var store=new Ext.data.JsonStore(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  data:...{ 'results': 2, 'rows': [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]},<br />
&nbsp;&nbsp;&nbsp;  autoLoad:true,<br />
&nbsp;&nbsp;&nbsp;  root:'rows',<br />
&nbsp;&nbsp;&nbsp;  fields:['id','name','occupation']<br />
&nbsp;&nbsp;&nbsp;  })<br />
<br />
&nbsp;&nbsp;&nbsp;  //目前请先略过gridpanel,以后再说<br />
&nbsp;&nbsp;&nbsp;  var grid = new Ext.grid.GridPanel(...{<br />
&nbsp;&nbsp;&nbsp;  ds: store,<br />
&nbsp;&nbsp;&nbsp;  columns: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "id", width: 200, sortable: true,dataIndex: 'id'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "name", width: 200, sortable: true,dataIndex: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}<br />
&nbsp;&nbsp;&nbsp;  ],height:350,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width:620,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  title:'Array Grid',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  renderTo: 'Div_GridPanel'<br />
&nbsp;&nbsp;&nbsp;  });<br />
<br />
<br />
Ext.data.SimpleStore<br />
从数组对象更方便的创建Store对象,<br />
例<br />
var store=new Ext.data.JsonStore(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  data:[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  autoLoad:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fields:[...{name: 'name', mapping: 1},...{name:'occupation',mapping:2}]<br />
&nbsp;&nbsp;&nbsp;  })<br />
&nbsp;&nbsp;&nbsp;  var grid = new Ext.grid.GridPanel(...{<br />
&nbsp;&nbsp;&nbsp;  ds: store,<br />
&nbsp;&nbsp;&nbsp;  columns: [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "name", width: 200, sortable: true,dataIndex: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}<br />
&nbsp;&nbsp;&nbsp;  ],height:350,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  width:620,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  renderTo: 'Div_GridPanel'<br />
&nbsp;&nbsp;&nbsp;  });<img src ="http://www.blogjava.net/super2/aggbug/237575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:21 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十三)Ext.data-Tree/Node</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237576.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:21:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237576.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237576.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237576.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237576.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237576.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.data.Tree</span><br />
继承自Observable,用于存放树装的数据结构<br />
<br />
方法<br />
Tree( [Node root] )<br />
以root为根构造Ext.data.Tree对象<br />
<br />
getNodeById( String id ) : Node<br />
由指定id得到节点<br />
<br />
getRootNode() : Node<br />
得到根节点,由属性root得到更方便<br />
<br />
setRootNode( Node node ) : Node<br />
设置根节点<br />
<br />
事件有<br />
append : ( Tree tree, Node parent, Node node, Number index )<br />
beforeappend : ( Tree tree, Node parent, Node node )<br />
beforeinsert : ( Tree tree, Node parent, Node node, Node refNode )<br />
beforemove : ( Tree tree, Node node, Node oldParent, Node newParent, Number index )<br />
beforeremove : ( Tree tree, Node parent, Node node )<br />
insert : ( Tree tree, Node parent, Node node, Node refNode )<br />
move : ( Tree tree, Node node, Node oldParent, Node newParent, Number index )<br />
remove : ( Tree tree, Node parent, Node node )<br />
<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.data.Node</span><br />
节点<br />
属性<br />
attributes : Object<br />
节点属性集<br />
<br />
childNodes : Array<br />
子节点<br />
<br />
firstChild : Node<br />
第一个子节点<br />
<br />
id : String<br />
id<br />
<br />
lastChild : Node<br />
最后一个子节点<br />
<br />
nextSibling : Node<br />
下一个兄弟节点<br />
<br />
parentNode : Node<br />
父节点<br />
<br />
previousSibling : Node<br />
前一个兄弟节点<br />
<br />
Node( Object attributes )<br />
构造节点<br />
<br />
appendChild( Node/Array node ) : Node<br />
将node做为附加在当前节点的lastChild之后<br />
<br />
<br />
bubble( Function fn, [Object scope], [Array args] ) : void<br />
由当前节点开始一直上溯到根节点,对于每个节点应用fn,直到有一个fn返回假为止<br />
<br />
<br />
cascade( Function fn, [Object scope], [Array args] ) : void<br />
由当前节点开始一下对每个子孙节点应用fn.直到返回false为止<br />
<br />
contains( Node node ) : Boolean<br />
当前节点是node的祖先节点?<br />
<br />
eachChild( Function fn, [Object scope], [Array args] ) : void<br />
基本同cascade,但只针对子节点应用fn<br />
<br />
findChild( String attribute, Mixed value ) : Node<br />
在子节点中找到第一个有属性attribute值为value的节点<br />
<br />
findChildBy( Function fn, [Object scope] ) : Node<br />
在子节点中找到第一个应用fn返回真的节点<br />
<br />
getDepth() : Number<br />
得到当前节点深度,根节点深度为0<br />
<br />
getOwnerTree() : Tree<br />
得到当前节点的Tree对象<br />
<br />
getPath( [String attr] ) : String<br />
得到当前节点的路径,默认attr为id<br />
<br />
indexOf( Node node ) : Number<br />
node在当前节点的子节点中的位置<br />
<br />
insertBefore( Node node, Node refNode ) : Node<br />
在参考节点refNode之前插入node节点<br />
<br />
isAncestor( Node node ) : Boolean<br />
当前节点是node的祖先节点?<br />
<br />
isFirst() : Boolean<br />
isLast() : Boolean<br />
当前节点是父节点的第一/最后一个节点<br />
<br />
isLeaf() : Boolean<br />
是叶节点?指不含子节点<br />
<br />
item( Number index ) : Node<br />
第index个子节点<br />
<br />
removeChild( Node node ) : Node<br />
移除node子节点<br />
<br />
replaceChild( Node newChild, Node oldChild ) : Node<br />
用newchild替换oldchild子节点<br />
<br />
sort( Function fn, [Object scope] ) : void<br />
用指定的fn排序子节点<img src ="http://www.blogjava.net/super2/aggbug/237576.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:21 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237576.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十一)Ext.data-Store </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237573.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:20:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237573.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237573.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237573.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt"><span style="color: #ff0000;">Ext.data.Store</span><br />
store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表<br />
<br />
方法:不列举继承来的方法<br />
Store( Object config )<br />
构造,config定义为{<br />
autoLoad : Boolean/Object,&nbsp;&nbsp;&nbsp;  //自动载入<br />
baseParams : Object,&nbsp;&nbsp;&nbsp;  //只有使用httpproxy时才有意义<br />
data : Array,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //数据<br />
proxy : Ext.data.DataProxy,//数据代理<br />
pruneModifiedRecords : boolean,//清除修改信息<br />
reader : Ext.data.Reader,&nbsp;&nbsp;&nbsp;  //数据读取器<br />
remoteSort : boolean,&nbsp;&nbsp;&nbsp;  //远程排序?<br />
sortInfo : Object,&nbsp;&nbsp;&nbsp;  //{field: "fieldName", direction: "ASC|DESC"}这样的排序对象<br />
url : String,&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //利用url构造HttpProxy<br />
}<br />
<br />
add( Ext.data.Record[] records ) : void<br />
增加记录records 到store<br />
<br />
addSorted( Ext.data.Record record ) : void<br />
增加record到store并排序(仅本地排序时有用)<br />
<br />
clearFilter( Boolean suppressEvent ) : void<br />
清除过滤器<br />
<br />
collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array<br />
收集由dataIndex指定字段的惟一值<br />
<br />
commitChanges() : void<br />
提交Store所有的变更,会引发Update事件<br />
<br />
<br />
filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void<br />
设定过滤器<br />
field:String&nbsp;&nbsp;&nbsp;  //字段名<br />
value:String&nbsp;&nbsp;&nbsp;  //RegExp 如果是字符器,检查field是否以value开始,如果是正则,检查是否匹配<br />
anyMatch:Boolean //匹配任何部分而不仅令是开始<br />
caseSensitive:Boolean //大小写敏感?<br />
<br />
filterBy( Function fn, [Object scope] ) : void<br />
更强悍的过滤方法.fn接收两个参数record和id<br />
<br />
find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number<br />
找到符合条件的第一条记录,参数同filter<br />
<br />
findBy( Function fn, [Object scope], [Number startIndex] ) : Number<br />
参见filterBy<br />
<br />
getAt( Number index ) : Ext.data.Record<br />
getById( String id ) : Ext.data.Record<br />
依充号/id得到record对象<br />
<br />
getCount() : void<br />
得到记录数<br />
<br />
getModifiedRecords() : Ext.data.Record[]<br />
得到修改过的记录集<br />
<br />
getRange( [Number startIndex], [Number endIndex] ) : Ext.data.Record[]<br />
得到指定范围的记录集合<br />
<br />
getSortState() : void<br />
得到排序状态:显然不是void而是返回一个排序对象,同sortInfo一样的结构{field: "fieldName", direction: "ASC|DESC"}<br />
<br />
getTotalCount() : void<br />
这个对于翻页信息还是很有用的<br />
<br />
indexOf( Ext.data.Record record ) : Number<br />
indexOfId( String id ) : Number<br />
由记录或id得到序号<br />
<br />
insert( Number index, Ext.data.Record[] records ) : void<br />
在指定的位置插入记录,并引发add事件<br />
<br />
isFiltered() : Boolean<br />
当前设置了过滤器则返回真<br />
<br />
load( Object options ) : void<br />
由指定的Proxy使用指定的reader读取远程数据<br />
options定义为<br />
{<br />
&nbsp;&nbsp;&nbsp;  params :Object,&nbsp;&nbsp;&nbsp;  //请求url需要附加的参数<br />
&nbsp;&nbsp;&nbsp;  callback :Function//回叫方法,接收三个参数<br />
&nbsp;&nbsp;&nbsp;  //r : Ext.data.Record[] //返回的record数组<br />
&nbsp;&nbsp;&nbsp;  //options: Options load方法传入的options<br />
&nbsp;&nbsp;&nbsp;  //success: Boolean //成功<br />
&nbsp;&nbsp;&nbsp;  scope :Object, //范围.默认是store本身<br />
&nbsp;&nbsp;&nbsp;  add :Boolean 追加还是更新<br />
}<br />
<br />
loadData( Object data, [Boolean append] ) : void<br />
用法比load简单一点,目的是一样的,只是这次数据由本地读取<br />
<br />
query( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : MixedCollection<br />
queryBy( Function fn, [Object scope] ) : MixedCollection<br />
查询,参数和find类似,但返回所有符合条件的record,而不是第一个符合条件记录的序号<br />
<br />
rejectChanges() : void<br />
放弃所有的变更<br />
<br />
reload( [Object options] ) : void<br />
重新载入,相当于 load(options,false),如果连options都没有传入,则取最后一次load时使用的参数<br />
<br />
remove( Ext.data.Record record ) : void<br />
移除指定记录<br />
<br />
removeAll() : void<br />
移除所有记录<br />
<br />
setDefaultSort( String fieldName, [String dir] ) : void<br />
设置默认排序规则<br />
<br />
sort( String fieldName, [String dir] ) : void<br />
排序<br />
<br />
sum( String property, Number start, Number end ) : Number<br />
对property字段由start开始到end求和<br />
<br />
事件列表<br />
add : ( Store this, Ext.data.Record[] records, Number index )<br />
beforeload : ( Store this, Object options )<br />
clear : ( Store this )<br />
datachanged : ( Store this )<br />
load : ( Store this, Ext.data.Record[] records, Object options )<br />
loadexception : ()<br />
metachange : ( Store this, Object meta. )<br />
remove : ( Store this, Ext.data.Record record, Number index )<br />
update : ( Store this, Ext.data.Record record, String operation )<br />
看名字都很简单,参数也不复杂,略过<br />
<br />
用例<br />
//得到远程json对象<br />
//其中jsoncallback.js内容为<br />
//{ 'results': 2, 'rows': [<br />
//&nbsp;&nbsp;&nbsp;  { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },<br />
//&nbsp;&nbsp;&nbsp;  { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]<br />
//}<br />
//定义proxy<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var proxy=new Ext.data.HttpProxy(...{url:'jsoncallback.js'});<br />
//定义reader<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var reader=new Ext.data.JsonReader(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  totalProperty: "results",//totalRecords属性由json.results得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  root: "rows",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //构造元数据的数组由json.rows得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: "id"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //id由json.id得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{name: 'name', mapping: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{name: 'occupation'}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //如果name与mapping同名,可以省略mapping<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;  )<br />
//构建Store&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var store=new Ext.data.Store(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy:proxy,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader<br />
&nbsp;&nbsp;  });<br />
//载入<br />
store.load();<br />
<br />
示例2<br />
//得到远程xml文件<br />
//其中xml文件内容为<br />
&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br />
&lt;dataset&gt;<br />
&lt;results&gt;2&lt;/results&gt;<br />
&lt;row&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;id&gt;1&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;name&gt;Bill&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;occupation&gt;Gardener&lt;/occupation&gt;<br />
&lt;/row&gt;<br />
&lt;row&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;id&gt;2&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;name&gt;Ben&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;  &lt;occupation&gt;Horticulturalist&lt;/occupation&gt;<br />
&lt;/row&gt;<br />
&lt;/dataset&gt;<br />
<br />
var proxy=new Ext.data.HttpProxy(...{url:'datasource.xml'});<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  var reader = new Ext.data.XmlReader(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  totalRecords: "results",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  record: "row",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: "id"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  }, [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{name: 'name', mapping: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ...{name: 'occupation'}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ]);<br />
&nbsp;&nbsp;  var store=new Ext.data.Store(...{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy:proxy,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader<br />
&nbsp;&nbsp;  });<br />
store.load();<br />
<br />
示例3<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000;">//</span><span style="color: #008000;">从本地数组得到</span><span style="color: #008000;"><br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000;"> </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> arr</span><span style="color: #000000;">=</span><span style="color: #000000;">[ [</span><span style="color: #000000;">1</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Bill</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Gardener</span><span style="color: #000000;">'</span><span style="color: #000000;">], [</span><span style="color: #000000;">2</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Ben</span><span style="color: #000000;">'</span><span style="color: #000000;">, </span><span style="color: #000000;">'</span><span style="color: #000000;">Horticulturalist</span><span style="color: #000000;">'</span><span style="color: #000000;">] ];<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> reader </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.data.ArrayReader(<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" nclick="this.style.display='none'; document.getelementbyid('_122_128_open_text').style.display=" align="top"  alt="" /><img title="点击图片可在新窗口打开" style="display: none; cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" nclick="this.style.display='none'; document.getelementbyid('_122_128_closed_text').style.display=" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{id: </span><span style="color: #000000;">0</span><span style="color: #000000;">}</span></span><span style="color: #000000;">,<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;  [<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" nclick="this.style.display='none'; document.getelementbyid('_140_165_open_text').style.display=" align="top"  alt="" /><img title="点击图片可在新窗口打开" style="display: none; cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" nclick="this.style.display='none'; document.getelementbyid('_140_165_closed_text').style.display=" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{name: </span><span style="color: #000000;">'</span><span style="color: #000000;">name</span><span style="color: #000000;">'</span><span style="color: #000000;">, mapping: </span><span style="color: #000000;">1</span><span style="color: #000000;">}</span></span><span style="color: #000000;">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" nclick="this.style.display='none'; document.getelementbyid('_180_211_open_text').style.display=" align="top"  alt="" /><img title="点击图片可在新窗口打开" style="display: none; cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" nclick="this.style.display='none'; document.getelementbyid('_180_211_closed_text').style.display=" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{name: </span><span style="color: #000000;">'</span><span style="color: #000000;">occupation</span><span style="color: #000000;">'</span><span style="color: #000000;">, mapping: </span><span style="color: #000000;">2</span><span style="color: #000000;">}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;  ]);<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" nclick="this.style.display='none'; document.getelementbyid('_261_286_open_text').style.display=" align="top"  alt="" /><img title="点击图片可在新窗口打开" style="display: none; cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" nclick="this.style.display='none'; document.getelementbyid('_261_286_closed_text').style.display=" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> store</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Ext.data.Store(</span><span style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span><span style="color: #000000;">{<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  reader:reader<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;  }</span></span><span style="color: #000000;">);<br />
<img title="点击图片可在新窗口打开" style="cursor: pointer;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;  store.loadData(arr); </span></div><img src ="http://www.blogjava.net/super2/aggbug/237573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:20 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(十)Ext.data-DataReader/ArrayReader/JsonReader/XmlReader javascript</title><link>http://www.blogjava.net/super2/archive/2008/10/30/237572.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237572.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237572.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237572.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.data.DataReader</span><br />
纯虚类,从数据源得到结构化数据转换为元数据对象,对象包含Record的集合,一般用做Store对象的元数据,<br />
具有如下格式<br />
{<br />
totalRecord:int,<br />
records:Array of Ext.data.Record<br />
}<br />
具体使用参见三个子类<br />
Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader<br />
<br />
<br />
方法<br />
DataReader( Object meta, Object recordType )<br />
构造<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.data.ArrayReader</span><br />
用于读数组到一个元数据对象<br />
<br />
ArrayReader( Object meta, Object recordType )<br />
构造,第一个参数是配置除了可以指示使用哪个字段做id外,不懂其它的用法,<br />
第二个参数是recordType与record对象的create方法的参数一样,是一样config对象数组,具体参见<br />
readRecords( Object o ) : Object<br />
读取o,返回一个元数据对象<br />
<br />
用例示范:<br />
//定义数组<br />
var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]; <br />
var reader = new Ext.data.ArrayReader(<br />
//以第一个元素做为recordid<br />
&nbsp;&nbsp;  {id: 0}, <br />
//定义数组到record的映射关系<br />
&nbsp;&nbsp;  [<br />
&nbsp;&nbsp;&nbsp;  {name: 'name', mapping: 1},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  {name: 'occupation', mapping: 2}&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;  ]<br />
);<br />
//生成元数据<br />
var data=reader.readRecords(arr);<br />
<br />
<span style="color: #ff0000;">Ext.data.JsonReader</span><br />
用于将一个json对象转换为元数据对象<br />
<br />
JsonReader( Object meta, Object recordType )<br />
JsonReader的构造参数meta可以有更多选择,<br />
{<br />
id : String,<br />
root : String,<br />
successProperty : String,<br />
totalProperty : String<br />
}<br />
都是对应json对象的属性名<br />
<br />
read( Object response ) : Object<br />
从一个response对象返回,response.responseText属性应仅含有一个json格式数据块<br />
<br />
readRecords( Object o ) : Object<br />
读取o,返回一个元数据对象<br />
<br />
使用示例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;  var json={ 'results': 2, 'rows': [<br />
&nbsp;&nbsp;&nbsp;  { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },<br />
&nbsp;&nbsp;&nbsp;  { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]<br />
};<br />
&nbsp;&nbsp;&nbsp;  var reader=new Ext.data.JsonReader(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  totalProperty: "results",//totalRecords属性由json.results得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  root: "rows",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //构造元数据的数组由json.rows得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: "id"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //id由json.id得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  },[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {name: 'name', mapping: 'name'}, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {name: 'occupation'}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //如果name与mapping同名,可以省略mapping<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ]<br />
&nbsp;&nbsp;&nbsp;  )<br />
&nbsp;&nbsp;&nbsp;  var data=reader.readRecords(json);<br />
<br />
<br />
<br />
<span style="color: #ff0000;">Ext.data.XmlReader</span><br />
xmlreader对象当然是为xml而准备的<br />
<br />
构造:<br />
XmlReader( Object meta, Mixed recordType )<br />
meta与jsonreader类似, <br />
meta是一个{ <br />
&nbsp;&nbsp;&nbsp;  id : String,<br />
&nbsp;&nbsp;&nbsp;  record : String,<br />
&nbsp;&nbsp;&nbsp;  success : String,<br />
&nbsp;&nbsp;&nbsp;  totalRecords : String<br />
}对象,只是这些字符串都是相对于文档根目录的domquery路径<br />
read( Object response ) : Object<br />
readRecords( Object doc ) : Object<br />
....<br />
<br />
<br />
var str=["&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;",<br />
&nbsp;&nbsp;&nbsp;  "&lt;dataset&gt;",<br />
"&lt;results&gt;2&lt;/results&gt;",<br />
"&lt;row&gt;",<br />
&nbsp;&nbsp;  "&lt;id&gt;1&lt;/id&gt;",<br />
&nbsp;&nbsp;  "&lt;name&gt;Bill&lt;/name&gt;",<br />
&nbsp;&nbsp;  "&lt;occupation&gt;Gardener&lt;/occupation&gt;",<br />
"&lt;/row&gt;",<br />
"&lt;row&gt;",<br />
&nbsp;&nbsp;  "&lt;id&gt;2&lt;/id&gt;",<br />
&nbsp;&nbsp;  "&lt;name&gt;Ben&lt;/name&gt;",<br />
&nbsp;&nbsp;  "&lt;occupation&gt;Horticulturalist&lt;/occupation&gt;",<br />
"&lt;/row&gt;",<br />
"&lt;/dataset&gt;"].join("");<br />
<br />
//生成xmldocument对象<br />
var xmlDocument;<br />
if(Ext.isIE){<br />
&nbsp;&nbsp;&nbsp;  xmlDocument = new ActiveXObject("Msxml2.FreeThreadedDOMDocument")<br />
&nbsp;&nbsp;&nbsp;  xmlDocument.async=false;<br />
&nbsp;&nbsp;&nbsp;  xmlDocument.resolveExternals = false;<br />
&nbsp;&nbsp;&nbsp;  xmlDocument.loadXML(str) <br />
}<br />
else{<br />
&nbsp;&nbsp;  xmlDocument = (new DOMParser()).parseFromString(str, "text/xml");<br />
}<br />
<br />
//然后开始...和其它两个reader一样的用法,只是这儿换了一种写法,recordtype也可以是一个record对象<br />
var record = Ext.data.Record.create([<br />
&nbsp;&nbsp;  {name: 'name', mapping: 'name'},&nbsp;&nbsp;&nbsp;&nbsp;  // "mapping" property not needed if it's the same as "name"<br />
&nbsp;&nbsp;  {name: 'occupation'}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // This field will use "occupation" as the mapping.<br />
])<br />
var reader = new Ext.data.XmlReader({<br />
&nbsp;&nbsp;  totalRecords: "results", <br />
&nbsp;&nbsp;  record: "row",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //row是节点选择器<br />
&nbsp;&nbsp;  id: "id"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
}, record);<br />
var data=reader.readRecords(xmlDocument);<img src ="http://www.blogjava.net/super2/aggbug/237572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:19 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(八)Ext.data- Connection/Ajax/Record javascript </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237570.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:18:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237570.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237570.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237570.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.data.Connection</span><br />
访问指定的url,这是个异步调用类,如果想得到服务器信息,请在request参数中指定callback方法或指定侦听者(对文件上传无效)<br />
<br />
Connection( Object config )<br />
构造,config定义为{<br />
autoAbort : Boolean,<br />
defaultHeaders : Object,<br />
disableCaching : Boolean,<br />
extraParams : Object,<br />
method : String,<br />
timeout : Number,<br />
url : String<br />
}<br />
对象<br />
<br />
方法:由&nbsp;&nbsp;  Observable继承过来的方法省略<br />
abort( [Number transactionId] ) : void<br />
放弃请求,如果同时有多个请求发生,参数指示请求进程序号,不指定则是放弃最后一个请求<br />
<br />
isLoading( [Number transactionId] ) : Boolean<br />
第transactionId个请求是否完成载入,未批定指最后一个<br />
<br />
request( [Object options] ) : Number<br />
最实用的当然是这个方法了,返回的正是前面的两个方法所需要的进程id<br />
其中options定义为{<br />
url:string,&nbsp;&nbsp;  //请求url<br />
params:Object/String/Function, //以post方法请求时传递的参数<br />
method:string ,&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //Get/Post<br />
callback:Function,&nbsp;&nbsp;
//回叫方法,不管是成功还是失败都会呼叫这个方法,有三个参数,由options传入的options参数,success:Boolean,成功?
response:Object, 含有返回数据的XMLHttpRequest对象<br />
success:Function,&nbsp;&nbsp;  //成功时回叫,第一个参数为XMLHttpRequest对象,第二个参数传入指定的options<br />
failure:Function,&nbsp;&nbsp;  //失败时回叫,参数同success<br />
scope:Object,&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //范围<br />
form.:Object/String,&nbsp;&nbsp;  //一个form对象或它的id,可以由此自动生成参数params<br />
isUpload:Boolean,&nbsp;&nbsp;  //文件上传?通常可以自动检测<br />
headers:Object,&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //要自定义的请求头信息<br />
xmlData:Object&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //一个xml文档对象,它将通过url附加参数的方式发起请求<br />
disableCaching:Boolean&nbsp;&nbsp;  //是否禁用缓存?默认为真<br />
}<br />
<br />
<span style="color: #ff0000;">Ext.Ajax</span><br />
由Ext.data.Connection 继承而来,方法和父类一模一样,但使用起来更简单一些,是一个全局惟一静态类<br />
示例:<br />
Ext.Ajax.request({<br />
&nbsp;&nbsp;  url: 'foo.php',<br />
&nbsp;&nbsp;  success: someFn,<br />
&nbsp;&nbsp;  failure: otherFn,<br />
&nbsp;&nbsp;  headers: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  'my-header': 'foo'<br />
&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;  params: { foo: 'bar' }<br />
});<br />
<br />
<br />
Ext.Ajax.request({<br />
&nbsp;&nbsp;&nbsp;  form. 'some-form',<br />
&nbsp;&nbsp;&nbsp;  params: 'foo=bar'<br />
});<br />
<br />
//所有的Ext.Ajax请求都会加个这个默认的头<br />
Ext.Ajax.defaultHeaders = {<br />
&nbsp;&nbsp;&nbsp;  'Powered-By': 'Ext'<br />
};<br />
<br />
//所有的Ext,Ajax在发起请求前都会调用showSpinner<br />
Ext.Ajax.on('beforerequest', this.showSpinner, this);<br />
<br />
<br />
<span style="color: #ff0000;">Ext.data.Record</span><br />
基本上可以理解为.net中的datarow或者sql server中的一行数据，它存放了数据的定义信息和他们的值<br />
[公有属性]<br />
data : Object&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  数据内容，一个json对象<br />
dirty : Boolean&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  是否修改过<br />
id : Object&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  惟一ID,默认从1000开始以1剃增<br />
modified : Object&nbsp;&nbsp;  如果记录没有修改过，为null如果修改过则存放原始值信息<br />
[公有方法]<br />
Record( Array data, [Object id] )<br />
这个构造方法并不用于创建记录对象，相反，应该使用create方法来创建record对象,参数data定义见create方法,id默认递增起始id<br />
<br />
beginEdit() : void<br />
开始修改<br />
<br />
cancelEdit() : void <br />
放弃所做的修改,参见commit<br />
<br />
copy( [String id] ) : Record<br />
//创建当前record的一个克隆值,如果未指定id使用当前id+1<br />
<br />
commit( [Boolean silent] ) : void <br />
commit方法一般会被Store对象调用而不是recorde本身,提交自创建或最后一次修改后的所有变更,如果silent为真将不会通知store对象<br />
<br />
<br />
create( [Array o] ) : function<br />
静态构造方法 o是config数组<br />
其中config可以含有如下属性<br />
{<br />
name : String&nbsp;&nbsp;  //字段名<br />
mapping : String //用于reader时的映射关系，如果是用于jsonreader，使用相对当前记录的javascript表达式<br />
&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //,如果是用于xmlreader,则是相对于记录的domquery表达式,对于ArrayReader,则是序号<br />
type:String&nbsp;&nbsp;  //可选值 auto /string/int/float/boolean/date,其中auto是默认值，不进行转换<br />
sortType : Mixed //排序类型,Ext.data.SortTypes成员之一,参见sortTypes<br />
sortDir : String //正序倒序 ASC/DESC值之一<br />
convert : Function&nbsp;&nbsp;  //转换函数,这个功能很有用，可自定义，接收当前value返回处理后的value<br />
dateFormat : String&nbsp;&nbsp;  //日期格式化字符串,convert:function的一个特例，使用Date.parseDate方法转换当前日期<br />
}<br />
<br />
<br />
endEdit() : void<br />
结束修改<br />
<br />
get( name {String} ) : Object<br />
指定命名字段string的值<br />
<br />
getChanges() : Object<br />
返回修改记录的对象<br />
<br />
reject( [Boolean silent] ) : void<br />
和commit相似，当然是拒绝所做的修改<br />
<br />
set( String name, Object value ) : void<br />
为字段name设定新值value<img src ="http://www.blogjava.net/super2/aggbug/237570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:18 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(九)Ext.data-DataProxy/HttpProxy/MemoryProxy/ScriptTagProxy javascript </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237571.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:18:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237571.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237571.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237571.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.data.DataProxy</span><br />
数据代理类是一个纯虚类，主要用于生成Ext.data.Record对象，没有公开的属性和方法，只是归定子类需要处理三个事件<br />
beforeload : ( Object This, Object params )<br />
load : ( Object This, Object o, Object arg )<br />
loadexception : ( Object This, Object o, Object arg, Object e )<br />
事实上参数也是子类自定义的<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.data.HttpProxy</span><br />
api文档中说httpProxy是从object继承来的，事实上source中它和下面的Ext.data.MemoryProxy/Ext.data.ScriptTagProxy都继承于DataProxy<br />
HttpProxy用于远程代理,而且服务端返回信息时必须指定Content-Type属性为"text/xml".<br />
<br />
HttpProxy( Object conn )<br />
构造一个HttpProxy对象,参数可以是一个类似于{url: 'foo.php'}这样的json对象,也可以是一个Ext.data.Connection对象,如果参数没有指定，将使用Ext.Ajax对象将被用于发起请求<br />
<br />
getConnection() : Connection<br />
得到当前连接对象<br />
<br />
load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void<br />
从配置的connection对象得到record数据块，并激发callback<br />
params:&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  发起http请求时所要传递到服务端的参数<br />
DataReader:&nbsp;&nbsp;&nbsp;  见DataReader<br />
callback:&nbsp;&nbsp;&nbsp;  回叫方法,第一个参数为接收到的信息,第二个参数为arg,第三个是成功标志<br />
scope:&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  范围<br />
arg:&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  这儿的参数将会传递给回叫函数callback<br />
<br />
使用示例:<br />
var proxy=new Ext.data.HttpProxy({url:'datasource.xml'});<br />
&nbsp;&nbsp;&nbsp;  //关于reader将会在Ext.data.DataReader中讲解<br />
&nbsp;&nbsp;&nbsp;  var reader = new Ext.data.XmlReader({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  totalRecords: "results", <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  record: "row",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  id: "id"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  }, [<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {name: 'name', mapping: 'name'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {name: 'occupation'}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  ]);<br />
&nbsp;&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp;  //定义回叫方法<br />
&nbsp;&nbsp;&nbsp;  var metadata;<br />
&nbsp;&nbsp;&nbsp;  function callback(data,arg,success){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if(success){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  metadata=data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;  //从connection配置的url中利用reader将返回的xml文件转为元数据,并传递给callback<br />
&nbsp;&nbsp;&nbsp;  proxy.load( null,reader,callback,this);<br />
<br />
<span style="color: #ff0000;">Ext.data.MemoryProxy</span><br />
MemoryProxy( Object data )<br />
构造<br />
load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void<br />
取数据，和HttpProxy类似,只是params参数没有被使用<br />
<br />
使用示例<br />
var proxy=new Ext.data.MemoryProxy([ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]); <br />
var reader = new Ext.data.ArrayReader(<br />
{id: 0}, <br />
[<br />
{name: 'name', mapping: 1},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
{name: 'occupation', mapping: 2}&nbsp;&nbsp;&nbsp;  <br />
]);<br />
<br />
var metadata;<br />
function callback(data,arg,success){<br />
&nbsp;&nbsp;&nbsp;  metadata=data;<br />
}<br />
proxy.load( null,reader,callback,this);<br />
<br />
<br />
<span style="color: #ff0000;">Ext.data.ScriptTagProxy</span><br />
这个类和HttpProxy类似，也是用于请求远程数据,但能用于跨主域调用,如果请求时使用了callback参数<br />
则服务端应指定Content-Type属性为"text/javascript"<br />
并返回callback(jsonobject)<br />
反之则应置Content-Type属性为"application/x-json"<br />
并直接返回json对象<br />
<br />
ScriptTagProxy( Object config )<br />
构造,其中<br />
config定义为{<br />
callbackParam : String,&nbsp;&nbsp;&nbsp;  //回叫参数<br />
nocache : Boolean,&nbsp;&nbsp;&nbsp;  //是否缓存<br />
timeout : Number,&nbsp;&nbsp;&nbsp;  //超时<br />
url : String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  //请求数据的url<br />
}<br />
<br />
abort() : void<br />
放弃<img src ="http://www.blogjava.net/super2/aggbug/237571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:18 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237569.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:17:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237569.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237569.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237569.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.KeyNav</span><br />
Ext的keyNav类能为Ext.Element元素提供简单的按键处理方法<br />
例:<br />
var el=Ext.get("textarea");<br />
new Ext.KeyNav(el, {<br />
&nbsp;&nbsp;&nbsp;  "left" : function(e){<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  alert("left key down");<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;  scope : el<br />
&nbsp;&nbsp;&nbsp;  }<br />
);<br />
它的行为与KeyMap类似，但功能比KeyMap要弱小的多，只能处理以下已定义键<br />
enter/left/right/up/down/tab/esc/pageUp/pageDown/del/home/end<br />
同情一下KeyNav<br />
<br />
方法只有三个,不用多解释<br />
KeyNav( Mixed el, Object config )<br />
disable() : void<br />
enable() : void<br />
<br />
<span style="color: #ff0000;">Ext.KeyMap类</span><br />
则强悍的多,其中最重要的当然是对按键的定义更灵活<br />
例:上例用KeyMap来写可能是<br />
var el=Ext.get("textarea");<br />
new Ext.KeyMap(el, {<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  key:Ext.EventObject.LEFT,<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  fn: function(e){<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  alert("left key down");<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  scope : el<br />
&nbsp;&nbsp;&nbsp;  }<br />
);<br />
<br />
方法<br />
KeyMap( Mixed el, Object config, [String eventName] )<br />
构造,与KeyNav也相似，但更灵活<br />
它是{<br />
key:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String/Array,&nbsp;&nbsp;&nbsp;&nbsp;  //可以是数字，字符，也可以是Ext.EventObject.LEFT这样的助记符,还能是他们组成的数组<br />
shift:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Boolean,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //ctrl键按下?<br />
ctrl:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Boolean,<br />
alt :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Boolean,<br />
fn :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Function,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //回叫方法<br />
scope:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //范围<br />
}这样的对象或它们组成的数组<br />
比如{key: 10},{key: [10,13]},{key:'\t'},{key:'abcd'},{key:Ext.EventObject.LEFT}都是合法的定义<br />
<br />
addBinding( Object/Array config ) : void<br />
增加新的绑定动作 config参见构造<br />
<br />
disable() : void<br />
enable() : void<br />
isEnabled() : Boolean<br />
允许，静止和状态查询<br />
<br />
on( Number/Array/Object key, Function fn, [Object scope] ) : void<br />
只添加一个处理时addBinding的快捷方式,但个人感觉并没有简单到哪儿去。<br />
<br />
<br />
<span style="color: #ff0000;">Ext.util.JSON</span><br />
轮到大名鼎鼎的JSON了，可惜Ext提供的JSON对象功能好弱小，只有encode主decode两个方法<br />
而且只能编码String/Array/Date,至少也要搞个 xml2json/json2xml方法呀<br />
<br />
<span style="color: #ff0000;">Ext.util.Format</span><br />
主要提供了一些格式化方法<br />
<br />
capitalize( String value ) : String<br />
首字母大写<br />
<br />
date( Mixed value, [String format] ) : String<br />
格式化日期输出,还是Date.format方法好用<br />
<br />
dateRenderer( String format ) : Function<br />
返回一个利用指定format格式化日期的方法<br />
<br />
defaultValue( Mixed value, String defaultValue ) : String<br />
如果value未定义或为空字符串则返回defaultValue<br />
<br />
ellipsis( String value, Number length ) : String<br />
如果value的长度超过length的,取前length-3个并用...替代，对中国人来说还是垃圾功能，用的字符串长度不是字节长度<br />
<br />
fileSize( Number/String size ) : String<br />
简单的格式化文件长度为 xxxbytes xxxKB xxxMB,没有GB哟<br />
<br />
htmlEncode( String value ) : String<br />
htmlDecode( String value ) : String<br />
HTML编码解码,将&amp; &lt; &gt; &#8220;替换为&amp;amp;&amp;lt;&amp;gt;&amp;quot;<br />
<br />
lowercase( String value ) : String<br />
将value转换为全小写<br />
<br />
stripScripts( Mixed value ) : String<br />
去除脚本标签<br />
<br />
stripTags( Mixed value ) : String<br />
去除HTML标签<br />
<br />
substr( String value, Number start, Number length ) : String<br />
取子字符串<br />
<br />
trim( String value ) : String<br />
去除开头和结尾的空格<br />
<br />
undef( Mixed value ) : Mixed<br />
如果value未定义,返回空字符串，反之返回value本身<br />
<br />
uppercase( String value ) : String<br />
转为全大写<br />
<br />
usMoney( Number/String value ) : String<br />
转为美元表示<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.util.DelayedTask</span><br />
提供一个setTimeout的简单替代方法<br />
<br />
公开的方法也只有三个<br />
DelayedTask( [Function fn], [Object scope], [Array args] )<br />
delay( Number delay, [Function newFn], [Object newScope], [Array newArgs] ) :<br />
cancel() : void<br />
简单的示例用法如果<br />
var task=new Ext.util.DelayedTask(Ext.emptuFn);<br />
task.delay(1000);<br />
task.cancel();<br />
<br style="color: #ff0000;" />
<span style="color: #ff0000;">Ext.util.TaskRunner</span><br />
增强版的DelayedTask,能提供多线程的定时服务，<br />
例:<br />
var task = {<br />
&nbsp;&nbsp;&nbsp;  run: function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ext.fly('clock').update(new Date().format('g:i:s A'));<br />
&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;  interval: 1000 <br />
}<br />
var runner = new Ext.util.TaskRunner();<br />
runner.start(task);<br />
<br />
四个方法都很简单<br />
TaskRunner( [Number interval] )<br />
start( [Object task] ) : Object<br />
stop( Object task ) : Object<br />
stopAll() : void<br />
<br />
<br />
<span style="color: #ff0000;">Ext.util.TextMetrics</span><br />
这个类主要是为了准备的得到块状化文本正确的高度和宽度<br />
例:<br />
var metrics=Ext.util.TextMetrics.createInstance('div');<br />
metrics.setFixedWidth(100);<br />
var size=metrics.getSize("中华人民共和国中华人民共和国中华人民共和国中华人民共和国");<br />
Ext.MessageBox.alert("getsize",String.format("width:{0}px\theight:{1}px",size.width,size.height))<br />
<br />
方法<br />
bind( String/HTMLElement el ) : void<br />
绑定到el<br />
<br />
createInstance( String/HTMLElement el, [Number fixedWidth] ) : Ext.util.TextMetrics.Instance<br />
为el创建TextMetrics实例<br />
<br />
getHeight( String text ) : Number<br />
getSize( String text ) : Object<br />
getWidth( String text ) : Number<br />
得到尺寸<br />
<br />
measure( String/HTMLElement el, String text, [Number fixedWidth] ) : Object<br />
测算文本text在el中将要占用的尺寸<br />
<br />
setFixedWidth( Number width ) : void<br />
设置指定的宽度<br />
<br />
<span style="color: #ff0000;">Ext.XTemplate</span><br />
增强型模板，支持更多功能了，虽然方法不多，但用起来来还真的很麻烦，但并不建议大家学习这样的自定义语法，不如用xslt<br />
另外这个Xtemplate虽然命名空间在Ext之下，但源文件却是放在util目录中的<br />
XTemplate( String/Array html )<br />
XTemplate.from( String/HTMLElement el ) : Ext.XTemplate<br />
apply() : void<br />
applyTemplate( Object values ) : String<br />
compile() : Function<br />
这些方法Ext.Template中都有说明，<img src ="http://www.blogjava.net/super2/aggbug/237569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:17 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(五)-Ext.EventManager/EventObject/CompositeElement/CompositeElementLite </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237567.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237567.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237567.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237567.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.EventManager</span><br />
事件管理者中的大部分方法都在Ext中有定义,主要用于事件管理<br />
<br />
<br />
addListener( String/HTMLElement el, String eventName, Function handler,<br />
on( String/HTMLElement el, String eventName, Function handler, [Object scope], [Object options] ) : void<br />
onDocumentReady( Function fn, [Object scope], [boolean options] ) : void<br />
removeListener( String/HTMLElement el, String eventName, Function fn ) :<br />
un( String/HTMLElement el, String eventName, Function fn ) : Boolean<br />
参见Ext<br />
<br />
onWindowResize( Function fn, Object scope, boolean options ) : void<br />
窗口大小变更时触发<br />
<br />
onTextResize( Function fn, Object scope, boolean options ) : void<br />
活动文本尺寸变更时触发<br />
<br />
<br />
<br />
<span style="color: #ff0000;">Ext.EventObject</span><br />
这两个类都定义在EventManager.js中，分开是为了逻辑上更清晰吧,这个类主要用于描述事件本身，一般用做事件处理方法的参数<br />
另外这个害定义了一些键值常量，比ascii码好记<br />
例<br />
function handleClick(e){ // 这儿的e就是一个EventObject对象<br />
&nbsp;&nbsp;&nbsp;  e.preventDefault();<br />
&nbsp;&nbsp;&nbsp;  var target = e.getTarget();<br />
&nbsp;&nbsp;&nbsp;  ...<br />
}<br />
var myDiv = Ext.get("myDiv");<br />
myDiv.on("click", handleClick);<br />
//or<br />
Ext.EventManager.on("myDiv", 'click', handleClick);<br />
Ext.EventManager.addListener("myDiv", 'click', handleClick);<br />
<br />
getCharCode() : Number<br />
getKey() : Number<br />
在非webkit|khtml类型网页中这两个方法是一样的，得到按键的值<br />
<br />
getPageX() : Number<br />
getPageY() : Number<br />
getXY() : Array<br />
得到事件坐标<br />
<br />
getRelatedTarget() : HTMLElement<br />
得到关联目标?我总是得到null<br />
<br />
getTarget( [String selector], [Number/Mixed maxDepth], [Boolean returnEl] ) :<br />
如果没有定义selector则直接返回target属性,如果定义了selector，则利用selector寻找祖先节点<br />
<br />
getTime() : Number<br />
得到事件发生的时间?<br />
<br />
getWheelDelta() : Number <br />
应该是个过时的方法，反正在ie和火狐下都不知道做什么用的,原意应该是得到鼠标的按键信息？<br />
<br />
hasModifier() : Boolean<br />
事件发生时是否同时按下了ctrl/alt/shift键之一？<br />
<br />
preventDefault() : void<br />
阻止浏览器的默认事件？<br />
<br />
stopEvent() : void<br />
preventDefault+stopPropagation<br />
<br />
stopPropagation() : void<br />
阻止事件冒泡<br />
<br />
within( Mixed el, [Boolean related] ) : Boolean<br />
如果事件的目标是el或者它的子节点将返回真<br />
<br />
<br />
<span style="color: #ff0000;">Ext.CompositeElement类</span><br />
基础的复合元素类,为容器中每个元素创建一个Ext.Element对象<br />
虽然不是继承自Ext.Element，但事实上它几乎支持Element类的所有方法<br />
例:<br />
var els = Ext.select("#some-el div.some-class", true);<br />
els.setWidth(100);<br />
<br />
<br />
add( String/Array els ) : CompositeElement<br />
添加 css选择器els匹配的元素 或 元素组成的数组 到当前对象<br />
<br />
clear() : void<br />
清除所有元素<br />
<br />
contains() : Boolean<br />
应该是contains(Mixed el):Boolean,当前复合元素中是否含有el<br />
<br />
each( Function fn, [Object scope] ) : CompositeElement<br />
通过el,this,index参数为每个元素调用fn<br />
<br />
fill( String/Array els ) : CompositeElement<br />
clear()&amp; add(els)<br />
<br />
filter( String selector ) : CompositeElement<br />
过滤<br />
<br />
first() : Ext.Element<br />
第一个元素<br />
<br />
getCount() : Number<br />
//元素的数量<br />
<br />
indexOf() : Boolean<br />
同contains一样应该有个Mixed参数<br />
<br />
item( Number index ) : Ext.Element<br />
第index个元素<br />
<br />
last() : Ext.Element<br />
最后一个元素<br />
<br />
removeElement( Mixed el, [Boolean removeDom] ) : CompositeElement<br />
删除el元素<br />
<br />
replaceElement( Mixed el, Mixed replacement, [Boolean domReplace] ) : CompositeElement<br />
替换<br />
<br />
Ext.CompositeElementLite<br />
由Ext.CompositeElement继承而来，重写了一些方法，但没看出与父类有什么不同<br />
addElements /invoke /item /addListener /each /indexOf /replaceElement<img src ="http://www.blogjava.net/super2/aggbug/237567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:16 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(六)-Ext.Fx </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237568.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237568.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237568.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237568.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.Fx类</span><br />
对于我这样的懒鬼而言，Fx类是核心类库中最激动人心的一个类，它不是最重要的，却是最实用的一个类<br />
定义了一些常用的特效方法,不妨自己多动手试试下面的方法，很有趣的<br />
<br />
fadeIn( [Object options] ) : Ext.Element<br />
渐显 options参数有以下属性<br />
callback:Function&nbsp;&nbsp;&nbsp;  完成后的回叫方法<br />
scope:Object&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  目标<br />
easing:String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  行为方法 默认值是:easeOut,可选值在ext_base中找到,但没有说明,以下内容从yahoo ui中找到的<br />
easeNone:匀速<br />
easeIn:开始慢且加速<br />
easeOut:开始快且减速<br />
easeBoth:开始慢且减速<br />
easeInStrong:开始慢且加速,t的四次方<br />
easeOutStrong:开始快且减速,t的四次方<br />
easeBothStrong:开始慢且减速,t的四次方<br />
elasticIn:<br />
elasticOut:<br />
elasticBoth:<br />
backIn:<br />
backOut:<br />
backBoth:<br />
bounceIn:<br />
bounceOut:<br />
bounceBoth:<br />
太多,慢慢体会吧<br />
afterCls:String&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  事件完成后元素的样式<br />
duration:Number&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  事件完成时间（以秒为单位）<br />
remove:Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  事件完成后元素销毁?<br />
useDisplay:Boolean&nbsp;&nbsp;&nbsp;  隐藏元素是否使用display或visibility属性?<br />
afterStyle:String/Object/Function&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  事件完成后应用样式<br />
block:Boolean&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  块状化?<br />
concurrent:Boolean&nbsp;&nbsp;&nbsp;  顺序还是同时执行？<br />
stopFx ：Boolean&nbsp;&nbsp;&nbsp;  当前效果完成后随合的效果是否将停止和移除<br />
<br />
fadeOut( [Object options] ) : Ext.Element<br />
渐隐 fadeOut和fadeIn能使用一个特别的endOpacity属性以指示结束时的透明度<br />
例:el.fadeIn({duration:5,endOpacity:0.7});<br />
<br />
frame( [String color], [Number count], [Object options] ) : Ext.Element<br />
边框变亮扩展然后渐隐<br />
例:el.frame("ff0000", 10, { duration: 3 })<br />
<br />
ghost( [String anchor], [Object options] ) : Ext.Element<br />
渐渐滑出视图,anchor定义<br />
tl&nbsp;&nbsp;&nbsp;&nbsp;  左上角(默认)<br />
t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  上居中 <br />
tr&nbsp;&nbsp;&nbsp;&nbsp;  右上角<br />
l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  左边界的中央<br />
c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  居中<br />
r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  右边界的中央<br />
bl&nbsp;&nbsp;&nbsp;&nbsp;  左下角<br />
b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  下居中<br />
br&nbsp;&nbsp;&nbsp;&nbsp;  右下角<br />
例:<br />
el.ghost('b', {<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeOut',<br />
&nbsp;&nbsp;&nbsp;  duration: .5<br />
&nbsp;&nbsp;&nbsp;  remove: false,<br />
&nbsp;&nbsp;&nbsp;  useDisplay: false<br />
});<br />
<br />
hasActiveFx() : Boolean<br />
指示元素是否当前有特效正在活动<br />
<br />
hasFxBlock() : Boolean<br />
是否有特效阻塞了<br />
<br />
highlight( [String color], [Object options] ) : Ext.Element<br />
高亮显示当前元素<br />
例:el.highlight("ffff9c", {<br />
&nbsp;&nbsp;&nbsp;  attr: "background-color", //can be any valid CSS property (attribute) that supports a color value<br />
&nbsp;&nbsp;&nbsp;  endColor: (current color) or "ffffff",<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeIn',<br />
&nbsp;&nbsp;&nbsp;  duration: 1<br />
});<br />
<br />
<br />
pause( Number seconds ) : Ext.Element<br />
暂停<br />
<br />
puff( [Object options] ) : Ext.Element<br />
吹，吹，吹个大气球，元素渐大并隐没<br />
例:el.puff({<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeOut',<br />
&nbsp;&nbsp;&nbsp;  duration: .5,<br />
&nbsp;&nbsp;&nbsp;  remove: false,<br />
&nbsp;&nbsp;&nbsp;  useDisplay: false<br />
});<br />
<br />
scale( Number width, Number height, [Object options] ) : Ext.Element<br />
缩放<br />
例:el.scale(<br />
&nbsp;&nbsp;&nbsp;  [element's width],<br />
&nbsp;&nbsp;&nbsp;  [element's height], {<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeOut',<br />
&nbsp;&nbsp;&nbsp;  duration: .35<br />
});<br />
<br />
sequenceFx()<br />
排队特效<br />
<br />
shift( Object options ) : Ext.Element<br />
位移,并可重置大小,透明度等<br />
例:<br />
el.shift({<br />
&nbsp;&nbsp;&nbsp;  width: [element's width],<br />
&nbsp;&nbsp;&nbsp;  height: [element's height],<br />
&nbsp;&nbsp;&nbsp;  x: [element's x position],<br />
&nbsp;&nbsp;&nbsp;  y: [element's y position],<br />
&nbsp;&nbsp;&nbsp;  opacity: [element's opacity],<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeOut',<br />
&nbsp;&nbsp;&nbsp;  duration: .35<br />
});<br />
<br />
slideIn( [String anchor], [Object options] ) : Ext.Element<br />
slideOut( [String anchor], [Object options] ) : Ext.Element<br />
滑入/滑出<br />
例:el.slideIn('t', {<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeOut',<br />
&nbsp;&nbsp;&nbsp;  duration: .5<br />
});<br />
<br />
<br />
stopFx() : Ext.Element<br />
停止特效<br />
<br />
switchOff( [Object options] ) : Ext.Element<br />
收起并隐没<br />
例:<br />
el.switchOff({<br />
&nbsp;&nbsp;&nbsp;  easing: 'easeIn',<br />
&nbsp;&nbsp;&nbsp;  duration: .3,<br />
&nbsp;&nbsp;&nbsp;  remove: false,<br />
&nbsp;&nbsp;&nbsp;  useDisplay: false<br />
});<br />
<br />
<br />
syncFx() : Ext.Element<br />
异步特效<img src ="http://www.blogjava.net/super2/aggbug/237568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:16 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(四)-Ext.DomQuery/DomHelper/Template </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237566.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237566.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237566.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237566.html</trackback:ping><description><![CDATA[<span style="color: #ff0000;">Ext.DomQuery类</span><br />
selector语法详见Ext类<br />
<br />
compile( String selector, [String type] ) : Function<br />
编写一个选择器或xpath查询到一个方法以方便重用,type取select(默认)或simple值之一<br />
<br />
filter( Array el, String selector, Boolean nonMatches ) : Array<br />
过滤el中的元素,保留符合selector的，如果nonMatches为真，结果相反<br />
<br />
is( String/HTMLElement/Array el, String selector ) : Boolean<br />
验证el是否匹配selector<br />
<br />
select( String selector, [Node root] ) : Array<br />
从root中选择匹配selector的对象数组<br />
<br />
selectNode( String selector, [Node root] ) : Element<br />
返回root中第一个匹配selector的对象<br />
<br />
selectNumber( String selector, [Node root], Number defaultValue ) : Number<br />
返回root中第一个匹配selector的对象的节点值，转换为整数或浮点数<br />
<br />
selectValue( String selector, [Node root], String defaultValue ) : void<br />
返回root中第一个匹配selector的对象的节点值，如果为null,用默认值defaultValue代替<br />
<br />
<span style="color: #ff0000;">Ext.DomHelper类</span><br />
append( Mixed el, Object/String o, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
创建一个新的DOM元素并添加到el<br />
参数 o 是一个DOM对象或一个原始html块<br />
<br />
<br />
applyStyles( String/HTMLElement el, String/Object/Function styles ) : void<br />
应用样式styles到对象el， 样式的对象表示方法见Ext.Element<br />
<br />
createTemplate( Object o ) : Ext.Template<br />
由o创建一个新的Ext.Template对象，详见 Ext.Template<br />
<br />
insertAfter( Mixed el, Object o, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
insertBefore( Mixed el, Object/String o, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
创建一个新的DOM对象o并将他们挺入在el之后/之前<br />
<br />
insertFirst( Mixed el, Object/String o, [Boolean returnElement] ) :<br />
创建一个新的DOM元素并做为第一个子节点添加到el (看了这个insertFirst，建议将append取一个别名insertLast:))<br />
<br />
insertHtml( String where, HTMLElement el, String html ) : HTMLElement<br />
where 可选值beforeBegin/afterBegin/beforeEnd/afterEnd<br />
将html代码插入到el附近,<br />
<br />
markup( Object o ) : String<br />
返回DOM对象o对应的html代码<br />
<br />
overwrite( Mixed el, Object/String o, [Boolean returnElement] ) :<br />
创建一个新的DOM元素o并用它重写el的内容 <br />
<br />
<br />
<span style="color: #ff0000;">Ext.Template类</span><br />
Template类主要是功能是生产html片断,例<br />
var t = new Ext.Template(<br />
&nbsp;&nbsp;&nbsp;  '&lt;div name="{id}"&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  '&lt;span class="{cls}"&gt;{name:trim} {value:ellipsis(10)}&lt;/span&gt;',<br />
&nbsp;&nbsp;&nbsp;  '&lt;/div&gt;'<br />
);<br />
t.append('some-element', {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'});<br />
<br />
公用方法:<br />
Template( String/Array html )<br />
构造一个Ext.Template对象，参数可以是字符串形式的html代码或它们组成的数组，<br />
<br />
Template.from( String/HTMLElement el, Object config ) : Ext.Template<br />
能过el的value(优先)或innerHTML来构造模板<br />
<br />
append( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
insertAfter( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
insertBefore( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
insertFirst( Mixed el, Object values, [Boolean returnElement] ) : HTMLElement/Ext.Element<br />
这组方法提供由 value产生的html 代码，并添加到dom 做为el的最后一个子节点/下一个兄弟节点/前一个兄弟节点/第一个子节点<br />
values解释参见applyTemplate<br />
<br />
apply() : void<br />
applyTemplate( Object values ) : String<br />
apply是applyTemplate的简写，如果参数是数字values可以是一个数组，或者一个象 {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'}这样的json对象<br />
<br />
<br />
compile() : Ext.Template<br />
编译模板,替换掉模板中的\=&gt;\\ ,\r\n|\n==&gt;\\n, '=\',主要是为了js自己处理方便<br />
<br />
overwrite( Mixed el, Object values, [Boolean returnElement] ) :<br />
利用values生成html替换el的内容<br />
<br />
set( String html, [Boolean compile] ) : Ext.Template<br />
设置模板的html,如果compile为真将调用compile方法<img src ="http://www.blogjava.net/super2/aggbug/237566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:15 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(二)Array类 </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237564.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:14:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237564.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237564.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237564.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237564.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237564.html</trackback:ping><description><![CDATA[Array类<br />
indexOf( Object o ) : Number<br />
object是否在数组中,找不到返回-1;找到返回位置<br />
remove( Object o ) : Array<br />
从数组中删除指定的对象object,如果找不到object则数组无变化<br />
<br />
Number类<br />
constrain( Number min, Number max ) : Number<br />
检查数值是否介于min与max之间, 如果大于max 返回max,如果小于min返回min, 否则返回当前值<br />
<br />
String类<br />
escape( String string ) : String<br />
将string中的'和\替换为\' \\<br />
<br />
format( String string, String value1, String value2 ) : String<br />
格式化字符串,例:<br />
var cls = 'my-class', text = 'Some text';<br />
var s = String.format('&lt;div class="{0}"&gt;{1}&lt;/div&gt;', cls,
text);// 结果 &lt;div class="my-class"&gt;Some text&lt;/div&gt;<br />
<br />
leftPad( String string, Number size, [String char] ) : String<br />
以char将string补齐为size长度,char默认定义空格<br />
<br />
toggle( String value, String other ) : String<br />
交换值,如果当前值等于value,则被赋值other,反之等于value,例:<br />
sort = sort.toggle('ASC', 'DESC');<br />
<br />
trim() : String<br />
去除开头或结尾多余的空格<br />
<br />
<br />
Date类<br />
Date.parseDate( String input, String format ) : Date<br />
将字符串string依指定的格式format转换为时间,其中格式定义详见format方法<br />
例:dt = Date.parseDate("2006-01-15 3:20:01 PM", "Y-m-d h:i:s A" ); <br />
<br />
<br />
add( String interval, Number value ) : Date<br />
增加时间段,String interval在Data类中已定义<br />
Date.MILLI = "ms";<br />
Date.SECOND = "s";<br />
Date.MINUTE = "mi";<br />
Date.HOUR = "h";<br />
Date.DAY = "d";<br />
Date.MONTH = "mo";<br />
Date.YEAR = "y";<br />
例var dt2 = new Date('10/1/2006').add(Date.DAY, -5); <br />
<br />
between( Date start, Date end ) : Boolean<br />
是否在两个指定的时间之间<br />
<br />
clearTime( Boolean clone ) : Date<br />
清除时间信息,如果clone为真,则克隆自已并返回新Date,本身的值并不改变,反之则修改自身的值<br />
<br />
clone() : Date<br />
克隆<br />
<br />
format( String format ) : String<br />
格式化时间<br />
d&nbsp;&nbsp;&nbsp;&nbsp;  两位数的日期&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  01 至 31<br />
D&nbsp;&nbsp;&nbsp;&nbsp;  三字母的星期名&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  Mon 至 Sun<br />
j&nbsp;&nbsp;&nbsp;&nbsp;  一位数的日期&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  1 至 31<br />
l&nbsp;&nbsp;&nbsp;&nbsp;  完整的星期名&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  Sunday 至 Saturday<br />
S&nbsp;&nbsp;&nbsp;&nbsp;  日期的英文顺序刻词尾,两个字符&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  st, nd, rd or th.<br />
w&nbsp;&nbsp;&nbsp;&nbsp;  一周中的第几天&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  0 (星期天) 至 6 (星期六)<br />
z&nbsp;&nbsp;&nbsp;&nbsp;  一年中的第几天&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  0 至 364 (闰年365 )<br />
W&nbsp;&nbsp;&nbsp;&nbsp;  ISO-8601 星期数, 周一算一个星期的开始&nbsp;&nbsp;&nbsp;  1 至 53<br />
F&nbsp;&nbsp;&nbsp;&nbsp;  月的完整英文名&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  January 至 December<br />
m&nbsp;&nbsp;&nbsp;&nbsp;  月,以0前导&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  01 至 12<br />
M&nbsp;&nbsp;&nbsp;&nbsp;  三字母的简写月名&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  Jan 至 Dec<br />
n&nbsp;&nbsp;&nbsp;&nbsp;  月&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  1 至 12<br />
t&nbsp;&nbsp;&nbsp;&nbsp;  本月有多少天&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  28 至 31<br />
L&nbsp;&nbsp;&nbsp;&nbsp;  是否闰年&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  1/0<br />
Y&nbsp;&nbsp;&nbsp;&nbsp;  完整的年份&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  例: 1999 或 2003<br />
y&nbsp;&nbsp;&nbsp;&nbsp;  年的后两位&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  例: 99 或 03<br />
a&nbsp;&nbsp;&nbsp;&nbsp;  上午/下午小写&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  am 或 pm<br />
A&nbsp;&nbsp;&nbsp;&nbsp;  上午/下午大写&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  AM 或 PM<br />
g&nbsp;&nbsp;&nbsp;&nbsp;  小时/12小时制&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  1 至 12<br />
G&nbsp;&nbsp;&nbsp;&nbsp;  小时/24小时制&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  0 至 23<br />
h&nbsp;&nbsp;&nbsp;&nbsp;  小时/12小时制&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  01 至 12<br />
H&nbsp;&nbsp;&nbsp;&nbsp;  小时/24小时制&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  00 至 23<br />
i&nbsp;&nbsp;&nbsp;&nbsp;  分钟&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  00 至 59<br />
s&nbsp;&nbsp;&nbsp;&nbsp;  秒&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  00 至 59<br />
u&nbsp;&nbsp;&nbsp;&nbsp;  毫秒&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  001 至 999<br />
O&nbsp;&nbsp;&nbsp;&nbsp;  时区,与格林威治标准时间之差&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  例: +0200<br />
T&nbsp;&nbsp;&nbsp;&nbsp;  时区简写&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  例: EST, MDT ...<br />
Z&nbsp;&nbsp;&nbsp;&nbsp;  时区间距&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  -43200 至 50400<br />
其中Date类内置了几种格式<br />
Date.patterns = {<br />
&nbsp;&nbsp;&nbsp;  ISO8601Long:"Y-m-d H:i:s",<br />
&nbsp;&nbsp;&nbsp;  ISO8601Short:"Y-m-d",<br />
&nbsp;&nbsp;&nbsp;  ShortDate: "n/j/Y",<br />
&nbsp;&nbsp;&nbsp;  LongDate: "l, F d, Y",<br />
&nbsp;&nbsp;&nbsp;  FullDateTime: "l, F d, Y g:i:s A",<br />
&nbsp;&nbsp;&nbsp;  MonthDay: "F d",<br />
&nbsp;&nbsp;&nbsp;  ShortTime: "g:i A",<br />
&nbsp;&nbsp;&nbsp;  LongTime: "g:i:s A",<br />
&nbsp;&nbsp;&nbsp;  SortableDateTime: "Y-m-d\\TH:i:s",<br />
&nbsp;&nbsp;&nbsp;  UniversalSortableDateTime: "Y-m-d H:i:sO",<br />
&nbsp;&nbsp;&nbsp;  YearMonth: "F, Y"<br />
};<br />
当然ISO8601Long和ISO8601Short还是非常招人喜欢的<br />
例:<br />
dt.format(Date.patterns.ISO8601Long);<br />
dt.format('Y-m-d H:i:s');<br />
<br />
getDayOfYear() : Number<br />
一年中的第几天,从0开始<br />
<br />
getDaysInMonth() : Number<br />
本月有多少天,<br />
<br />
getElapsed( [Date date] ) : Number<br />
当前日期对象与date之间相差的毫秒数<br />
<br />
getFirstDateOfMonth() : Date<br />
本月的第一天<br />
<br />
getFirstDayOfMonth() : Number<br />
本月第一天是星期几<br />
<br />
getGMTOffset() : String<br />
时区信息(见格式定义中的'O')<br />
getFirstDateOfMonth() : Date<br />
本月最后一天<br />
<br />
getFirstDayOfMonth() : Number<br />
本月最后一天是星期几<br />
<br />
getSuffix() : String<br />
日期后导符(见格式定义中的S)<br />
<br />
getTimezone() : String<br />
时区(见T)<br />
<br />
getWeekOfYear() : Number<br />
一年中的第几周(见W)<br />
<br />
isLeapYear() : Boolean<br />
是否闰年<br />
<br />
<br />
Function类<br />
createCallback(/*args...*/) : Function<br />
创建回叫方法<br />
<br />
createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] ) :<br />
创建委托<br />
这两个记法除了传参方式不同,看不出有什么差异都是调用method.apply,createCallback可以看作一个简化版的createDelegate<br />
createCallback==&gt;return method.apply(window, args);<br />
createDelegate==&gt;return method.apply(obj || window, callArgs);<br />
前者参数比较简单,直接传过去了,后者的规则比较复杂点,如果appendArgs为真,args将附加在参数列表之后,如果是数值,args将在参数列表的appendargs位置插入,其它情况下原参将不起作用<br />
例:<br />
var fn = func1.createDelegate(scope, [arg1,arg2], true) <br />
//fn(a,b,c) === scope.func1(a,b,c,arg1,arg2); <br />
var fn = func1.createDelegate(scope, [arg1,arg2]) <br />
//fn(a,b,c) === scope.func1(arg1,arg2); <br />
var fn = func1.createDelegate(scope, [arg1,arg2], 1) <br />
//fn(a,b,c) === scope.func1(a,arg1,arg2,b,c); <br />
var fn = func1.createCallback(arg1, arg2); <br />
//fn() === func1(arg1, arg2) <br />
<br />
<br />
createCallback : function(/*args...*/) <br />
<br />
<br />
createInterceptor( Function fcn, [Object scope] ) : Function<br />
创建阻断方法,如果fcn返回false,原方法将不会被执行<br />
<br />
createSequence( Function fcn, [Object scope] ) : Function<br />
创建组合方法,执行原方法+fcn<br />
<br />
defer( Number millis, [Object obj], [Array args], [Boolean/Number appendArgs] ):Number<br />
定时执行，隔millis毫秒后执行原方法<img src ="http://www.blogjava.net/super2/aggbug/237564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:14 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(三)Ext.Element类 </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237565.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:14:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237565.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237565.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237565.html</trackback:ping><description><![CDATA[Ext.Element类<br />
<br />
Element( String/HTMLElement element, [Boolean forceNew] )<br />
由id或DOM节点创建Element对象<br />
<br />
Element.fly( String/HTMLElement el, [String named] ) : Element<br />
由id或DOM节点创建一个全局共享的活动元素,可由named命名以避免可能的冲突<br />
<br />
Element.get( Mixed el ) : Element<br />
由id或DOM节点或已存在的Element得到一个Ext.Element对象<br />
<br />
addClass( String/Array className ) : Ext.Element<br />
为元素添加一个或多个css类名<br />
<br />
addClassOnClick( String className ) : Ext.Element<br />
为点击事件添加和移除css类<br />
<br />
addClassOnFocus( String className ) : Ext.Element<br />
为得到和失去焦点添加和移除css类<br />
<br />
addClassOnOver( String className, [Boolean preventFlicker] ) : Ext.Element<br />
为鼠标移入移出事件添加和移除css类(该方法未实际使用preventFlicker参数)<br />
<br />
addKeyListener( Number/Array/Object/String key, Function fn, [Object scope] ) : Ext.KeyMap<br />
为对象添加按键侦听 key由数值或字符串或{key: (number or array), shift: (true/false), ctrl: (true/false), alt: (true/false)}这样的对象或他们的数组组成<br />
<br />
addKeyMap( Object config ) : Ext.KeyMap<br />
功能同addKeyListener,只是传参方式不同<br />
例:<br />
el.addKeyMap({key : "ab",ctrl : true,fn: fn,scope:el });<br />
和<br />
el.addKeyListener({key:"ab",ctrl:true},fn,el);<br />
是等价的,都是在 按下ctral+a或ctrl+b后呼叫fn<br />
<br />
addListener( String eventName, Function fn, [Object scope], [Object options] ) : void<br />
定义事件侦听,eventName:事件名,fn:事件处理方法,scrope:范围,其中options的定义比较复杂,可以包含以下属性<br />
scope {Object} : 处理fn的范围<br />
delegate {String} : 一个简单选择器(过滤目标或寻找目标的子孙节点)<br />
stopEvent {Boolean} : 阻止事件,等于preventDefault+stopPropagation<br />
preventDefault {Boolean} : 阻止默认活动<br />
stopPropagation {Boolean} : 阻止事件冒泡<br />
normalized {Boolean} :设为flase将允许浏览器事件替代Ext.EventObject<br />
delay {Number} : 延时多少毫秒后发生<br />
single {Boolean} : 只运行一次<br />
buffer {Number} : 在Ext.util.DelayedTask中预定事件<br />
当然,还可能自定义参数以传入function<br />
<br />
<br />
alignTo( Mixed element, String position, [Array offsets], [Boolean/Object animate] ) : Ext.Element<br />
将el对齐到element,positon,指示对齐的位置,可选以下定义<br />
tl&nbsp;&nbsp;&nbsp;&nbsp;  左上角(默认)<br />
t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  上居中 <br />
tr&nbsp;&nbsp;&nbsp;&nbsp;  右上角<br />
l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  左边界的中央<br />
c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  居中<br />
r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  右边界的中央<br />
bl&nbsp;&nbsp;&nbsp;&nbsp;  左下角<br />
b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  下居中<br />
br&nbsp;&nbsp;&nbsp;&nbsp;  右下角<br />
position还可以使用?约束移动不能超出窗口<br />
offsets 偏移量,以象素为单位<br />
animate 详见animate定义<br />
<br />
例:div1.alignTo('div2','c-bl?',[20,0],true);<br />
采用默认动画将div1的最中央对齐到div2的左下角,并右移20个象素,且不能超出窗口<br />
<br />
<br />
anchorTo( Mixed element, String position, [Array offsets],
[Boolean/Object animate], [Boolean/Number monitorScroll], Function
callback ) : Ext.Element<br />
功能和alignTo类似,只是当窗口重定义大小的时候也会引发重对齐事件<br />
monitorScroll参数说明是否需要监视滚动条行为,如果定义为数值则是定义的延时,单位为毫秒,默认是50ms,<br />
callback定义了animate完成后的回叫方法<br />
<br />
animate( Object args, [Float duration], [Function onComplete], [String easing], [String animType] ) : Ext.Element<br />
执行动画.<br />
args:目标<br />
duration:时间间隔.默认是0.35<br />
Function:完成后的回叫方法<br />
easing:行为方法 默认值是:easeOut,可选值在ext_base中找到,但没有说明,以下内容从yahoo ui中找到的<br />
easeNone:匀速<br />
easeIn:开始慢且加速<br />
easeOut:开始快且减速<br />
easeBoth:开始慢且减速<br />
easeInStrong:开始慢且加速,t的四次方<br />
easeOutStrong:开始快且减速,t的四次方<br />
easeBothStrong:开始慢且减速,t的四次方<br />
elasticIn:<br />
elasticOut:<br />
elasticBoth:<br />
backIn:<br />
backOut:<br />
backBoth:<br />
bounceIn:<br />
bounceOut:<br />
bounceBoth:<br />
太多,慢慢体会吧<br />
animType:定义动画类型,默认值run 可选值:color/motion/scroll<br />
<br />
<br />
appendChild( String/HTMLElement/Array/Element/CompositeElement el ) : Ext.Element<br />
添加子元素el(el须已存在)<br />
<br />
appendTo( Mixed el ) : Ext.Element<br />
将当前元素添加到el<br />
<br />
applyStyles( String/Object/Function styles ) : Ext.Element<br />
应用样式,styles是"width:100px"这样的字符串或{width:"100px"}这样的对象,function是指返回这样的字串和对象的函数,这是一个没有用的批示,因为任何传参的地方都可以是返回要求类型的function.另见setStyle<br />
<br />
autoHeight( [Boolean animate], [Float duration], [Function onComplete], [String easing] ) : Ext.Element<br />
自适应高度,参数都是老相识了,惟一需要注意的是这个方法使用了setTimeout,高度不会马上变更<br />
<br />
blur() : Ext.Element<br />
失去焦点,忽略所有的异常<br />
<br />
boxWrap( [String class] ) : Ext.Element<br />
用一个指定样式class的div将当前元素包含起来,class默认值为x-box<br />
<br />
center( [Mixed centerIn] ) : void<br />
alignTo的简华版.相当于alignTo(centerIn || document, 'c-c'),当前元素的中心对齐到centerIn元素的中心<br />
<br />
child( String selector, [Boolean returnDom] ) : HTMLElement/Ext.Element<br />
依selector选择子孙节点,依returnDom不同批示返回html元素还是ext元素,未定义或false时返回Ext.Element<br />
<br />
clean( [Boolean forceReclean] ) : void<br />
清除无用的空白文本节点(我喜欢这个想法)<br />
<br />
clearOpacity() : Ext.Element<br />
清除当前元素样式中不通用元素,清除ie中的filter,清除FF中的opacity/-moz-opacity/-khtml-opacity<br />
<br />
clearPositioning( [String value] ) : Ext.Element<br />
清除定位,恢复到默认值,相当于<br />
this.setStyle({"left": value,"right": value,"top": value,"bottom": value,"z-index": "","position" : "static"});<br />
<br />
clip() : Ext.Element<br />
裁剪溢出部分,用unclip()恢复<br />
<br />
contains( HTMLElement/String el ) : Boolean<br />
当前元素中是否存在el<br />
<br />
createChild( Object config, [HTMLElement insertBefore], [Boolean returnDom] ) : Ext.Element<br />
创建一个新的子节点<br />
config :DomHelper元素对象,如果没有特别指明tag,将使用div做默认tag,详情参见DomHelper,如果未定义insertBefore,则追加<br />
<br />
createProxy( String/Object config, [String/HTMLElement renderTo], [Boolean matchBox] ) : Ext.Element<br />
创建一个代理元素<br />
config:代理元素的类名或DomHelper config对象<br />
renderTo:将要绘制代理元素的html element或id<br />
matchBox:是否对齐<br />
<br />
createShim() : Ext.Element<br />
在当前元素之前创建一个classname为ext-shim的iframe,有什么用?<br />
<br />
down( String selector, [Boolean returnDom] ) : HTMLElement/Ext.Element<br />
通过样式选择器selector选择子孙节点<br />
<br />
enableDisplayMode( [String display] ) : Ext.Element<br />
setVisibilityMode的简便方法<br />
<br />
findParent( String selector, [Number/Mixed maxDepth], [Boolean returnEl] ) : HTMLElement<br />
通过简单选择器selector寻找祖先节点 ,直到maxDepth(元素maxDepth默认为10,也可以是指定的DOM 节点),找不到返回null<br />
<br />
findParentNode( String selector, [Number/Mixed maxDepth], [Boolean returnEl] ) : HTMLElement<br />
从父元素开始使用简单选择器selector选择DOM节点<br />
<br />
first( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement<br />
得到第一个符合selector条件的子节点,跳过文本节点<br />
<br />
focus() : Ext.Element<br />
得到焦点<br />
<br />
getAlignToXY( Mixed element, String position, [Array offsets] ) : Array<br />
得到当前元素按position规则对齐到element时的XY坐标值 position/offsets参数参见alignTo方法<br />
<br />
getAnchorXY( [String anchor], [Object size], [Boolean local] ) : Array<br />
得到当前元素锚点指定的坐标值 anchor定义参见alignTo方法,默认为c<br />
<br />
getAttributeNS( String namespace, String name ) : String<br />
得到使用了命名空间namespace的属性name之值,<br />
<br />
getBorderWidth( String side ) : Number<br />
得到side指定的边框之和,side可以是t, l, r, b或他们的任意组合,比如getBorderWidth("lr")就是得到左边框和右边框之和<br />
<br />
getBottom( Boolean local ) : Number<br />
得到当前元素的底部纵坐标,元素纵坐标+元素高度<br />
<br />
getBox( [Boolean contentBox], [Boolean local] ) : Object<br />
得到当前元素的box对象:{x,y,width,height}<br />
<br />
getCenterXY() : Array<br />
如果当前元素要居中对齐时的横纵坐标值,等价getAlignToXY(document, 'c-c')<br />
<br />
getColor( String attr, String defaultValue, [String prefix] ) : void<br />
得到当前元素指定attr的颜色值,如果没指定,返回defualtValue,比较郁闷的是明明不是void为什么api中批示是一个void?应该是个字符串<br />
<br />
getComputedHeight() : Number<br />
得到计算过的高度,得到offsetHeight或css中定义的height值之一,如果使用了padding/borders,也会计算进去<br />
<br />
getComputedWidth() : Number<br />
见getComputedHeight<br />
<br />
getFrameWidth( String sides ) : Number<br />
得到sides定义的border宽度和padding定义的宽度之和,side定义见getBorderWidth<br />
<br />
getHeight( [Boolean contentHeight] ) : Number<br />
返回元素的offsetHeight<br />
<br />
getLeft( Boolean local ) : Number<br />
得到横坐标<br />
<br />
getMargins( [String sides] ) : Object/Number<br />
如果没有定义sides,则返回一个含有{left,top,width,height}对象,反之返回side指定的宽度,side定义见getBorderWidth<br />
<br />
getOffsetsTo( Mixed element ) : Array<br />
计算从element到当前元素的偏移量<br />
<br />
getPadding( String side ) : Number<br />
得到由side指定的padding之和<br />
<br />
getPositioning() : Object<br />
得到当前元素的位置信息 返回含以下属性的对象{position,left,right,top,bottom,z-index}<br />
<br />
getRegion() : Region<br />
得到当前元素的区域信息 返回含有以下属性的Ext.lib.Region对象{top, left, bottom, right}<br />
<br />
getRight( Boolean local ) : Number<br />
右边界值<br />
<br />
getScroll() : Object<br />
得到一个批示滚动条位置的对象{left, top}<br />
<br />
getSize( [Boolean contentSize] ) : Object<br />
得到宽度和高度组成的对象信息{width,height}<br />
<br />
getStyle( String property ) : String<br />
得到指定的样式值 getStyles简化版<br />
<br />
getStyles( String style1, String style2, String etc. ) : Object<br />
得到由参数组成的对象<br />
例:el.getStyles('color', 'font-size', 'width') <br />
可能返回 {'color': '#FFFFFF', 'font-size': '13px', 'width': '100px'}<br />
<br />
getTop( Boolean local ) : Number<br />
得到顶点纵坐 标<br />
<br />
getUpdater() : Ext.Updater<br />
得到当前元素的Updater对象,参见Ext.Updater类<br />
<br />
getValue( Boolean asNumber ) : String/Number<br />
得到value属性的值<br />
<br />
getViewSize() : Object<br />
得到clientHeight和clientWidth信息给成的对象{width,height}<br />
<br />
getWidth( [Boolean contentWidth] ) : Number<br />
..这样的方法真多<br />
<br />
getX() : Number<br />
getXY() : Array<br />
getY() : Array<br />
得到页面偏移量,也就是绝对坐标<br />
<br />
hasClass( String className ) : Boolean<br />
样式类className 存在于当前元素的dom 节点中<br />
<br />
hide( [Boolean/Object animate] ) : Ext.Element<br />
隐藏当前元素<br />
<br />
hover( Function overFn, Function outFn, [Object scope] ) : Ext.Element<br />
设置鼠标移入移出事件<br />
<br />
initDD( String group, Object config, Object overrides ) : Ext.dd.DD<br />
initDDProxy( String group, Object config, Object overrides ) : Ext.dd.DDProxy<br />
initDDTarget( String group, Object config, Object overrides ) : Ext.dd.DDTarget<br />
这个要放到 Ext.dd去专门搞了,用于拖曳<br />
<br />
insertAfter( Mixed el ) : Ext.Element<br />
insertBefore( Mixed el ) : Ext.Element<br />
insertFirst( Mixed/Object el ) : Ext.Element<br />
在DOM中el元素之前之后...插入当前元素<br />
<br />
insertHtml( String where, String html, Boolean returnEl )<br />
插入html内容 where 可选beforeBegin, afterBegin, beforeEnd, afterEnd<br />
<br />
insertSibling( Mixed/Object/Array el, [String where], [Boolean returnDom] ) :<br />
插入或创建el做为当前元素的兄弟节点,where可选before/after,默认为before<br />
<br />
is( String selector ) : Boolean<br />
验证当前节点是否匹配简单选择器selector<br />
<br />
isBorderBox()<br />
测试不同的样式规则以决定当前元素是否使用一个有边框的盒子<br />
<br />
isDisplayed() : Boolean<br />
只要不是指定display属性none都会返回真<br />
<br />
isMasked() : Boolean<br />
仅有当前元素有mask并且可见时为真,mask译为蒙片?就是有些输入框没得到值之前会有一行模糊的提示的那种东西<br />
<br />
isScrollable() : Boolean<br />
可以滚动?<br />
<br />
isVisible( [Boolean deep] ) : Boolean<br />
可见?<br />
<br />
last( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement<br />
见first<br />
<br />
load( String/Function url, [String/Object params], [Function callback], [Boolean discardUrl] ) : Ext.Element<br />
直接应用当前updater的update方法<br />
<br />
mask( [String msg], [String msgCls] ) : Element<br />
为当前对象创建蒙片<br />
<br />
move( String direction, Number distance, [Boolean/Object animate] ) : Ext.Element<br />
相前元素相对于当前位置移动,<br />
direction批示方向可能的值是"l","left" - "r","right" - "t","top","up" - "b","bottom","down".<br />
distance,指示要移动的距离,以像素为单位<br />
<br />
moveTo( Number x, Number y, [Boolean/Object animate] ) : Ext.Element<br />
称动到指定的位置<br />
<br />
next( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement<br />
下一个符合selector的兄弟节点,<br />
<br />
on( String eventName, Function fn, [Object scope], [Object options] ) : void<br />
详见addListener<br />
<br />
position( [String pos], [Number zIndex], [Number x], [Number y] ) : void<br />
初始化当前元素的位置 pos可选择relative/absolute/fixed<br />
<br />
prev( [String selector], [Boolean returnDom] ) : Ext.Element/HTMLElement<br />
前一个符合selector的兄弟节点<br />
<br />
query( String selector ) : Array<br />
通过样式选择器选择子节点<br />
<br />
radioClass( String/Array className ) : Ext.Element<br />
添加样式或样式数组到当前元素，并移除兄弟节点中的指定样式<br />
<br />
relayEvent( String eventName, Object object ) : void<br />
将当前元素的eventName事件同时转发给object对象<br />
<br />
remove() : void<br />
从当前DOM中删除元素,并从缓存中移除<br />
<br />
removeAllListeners() : Ext.Element<br />
移除所有的侦听者 <br />
<br />
removeClass( String/Array className ) : Ext.Element<br />
移除样式类<br />
<br />
removeListener( String eventName, Function fn ) : Ext.Element<br />
移除事件eventName的fn侦听器<br />
<br />
repaint() : Ext.Element<br />
强制浏览器重绘当前元素<br />
<br />
replace( Mixed el ) : Ext.Element<br />
用当前元素替换el<br />
<br />
replaceClass( String oldClassName, String newClassName ) : Ext.Element<br />
替换样式类<br />
<br />
replaceWith( Mixed/Object el ) : Ext.Element<br />
用el替换当前元素<br />
<br />
scroll( String direction, Number distance, [Boolean/Object animate] ) : Boolean<br />
滚动,scroll会保证元素不会越界,direction和distance参数见move<br />
<br />
scrollIntoView( [Mixed container], [Boolean hscroll] ) : Ext.Element<br />
滚动到container内的视图<br />
<br />
scrollTo( String side, Number value, [Boolean/Object animate] ) : Element<br />
基本与scroll方法相同,但不保证元素不越界<br />
<br />
select( String selector, [Boolean unique] ) :<br />
与query不同的是,通过样式选择器selector,select方法会返回一个复合元素对象(CompositeElement)或CompositeElementLite,<br />
<br />
set( Object o, [Boolean useSet] ) : Ext.Element<br />
设置属性，例<br />
el.set({width:'200px',height:'200px'});<br />
<br />
setBottom( String bottom ) : Ext.Element<br />
setLeft( String left ) : Ext.Element<br />
setRight( String right ) : Ext.Element<br />
setTop( String top ) : Ext.Element<br />
setLeftTop( String left, String top ) : Ext.Element<br />
设置css 对象的属性值<br />
<br />
setBounds( Number x, Number y, Number width, Number height, [Boolean/Object animate] ) : Ext.Element<br />
马上改变当前元素的位置和尺寸<br />
<br />
setBox( Object box, [Boolean adjust], [Boolean/Object animate] ) : Ext.Element<br />
为当前元素设置一个盒子box:{x, y, width, height},adjust指示是否马上调整尺寸<br />
<br />
setDisplayed( Boolean value ) : Ext.Element<br />
设置可见性<br />
<br />
setHeight( Number height, [Boolean/Object animate] ) : Ext.Element<br />
setWidth( Number width, [Boolean/Object animate] ) : Ext.Element<br />
setSize( Number width, Number height, [Boolean/Object animate] ) : Ext.Element<br />
设置高度和宽度<br />
<br />
setLocation( Number x, Number y, [Boolean/Object animate] ) : Ext.Element<br />
设置当前元素相对于页面的横纵坐标<br />
<br />
setOpacity( Float opacity, [Boolean/Object animate] ) : Ext.Element<br />
设置透明度，opacity为1完全不透明,0完全透明<br />
<br />
setPositioning( Object posCfg ) : Ext.Element<br />
为当前元素指定位置信息,参数posCfg参见getPositioning说明<br />
<br />
setRegion( Ext.lib.Region region, [Boolean/Object animate] ) : Ext.Element<br />
为当前元素指定区域信息 region定义 见getRegion<br />
<br />
setStyle( String/Object property, [String value] ) : Ext.Element<br />
设置样式<br />
<br />
setVisibilityMode( visMode Element.VISIBILITY ) : Ext.Element<br />
指示是使用Element.VISIBILITY还是Element.DISPLAY属性来定义可见性<br />
<br />
setVisible( Boolean visible, [Boolean/Object animate] ) : Ext.Element<br />
设置可见性<br />
<br />
<br />
setX( Number The, [Boolean/Object animate] ) : Ext.Element<br />
setXY( Array pos, [Boolean/Object animate] ) : Ext.Element<br />
setY( Number The, [Boolean/Object animate] ) : Ext.Element<br />
设置当前元素相对于page的位置<br />
<br />
show( [Boolean/Object animate] ) : Ext.Element<br />
显示当前元素<br />
<br />
swallowEvent( String eventName, [Boolean preventDefault] ) : Ext.Element<br />
阻止eventName事件冒泡，并视preventDefault阻断默认行为<br />
<br />
toggle( [Boolean/Object animate] ) : Ext.Element<br />
切换元素的visibility 或display属性,依赖于setVisibilityMode设定的<br />
<br />
toggleClass( String className ) : Ext.Element<br />
如果样式名存在于当前元素对应的dom 节点，移除，反之应用<br />
<br />
translatePoints( Number/Array x, Number y ) : Object<br />
返回一个{left,top}结构<br />
<br />
un( String eventName, Function fn ) : Ext.Element<br />
解除事件侦听，参见&nbsp;&nbsp;  removeListener<br />
<br />
unclip() : Ext.Element<br />
见clip;<br />
<br />
unmask() : void<br />
见mask;<br />
<br />
unselectable(): Ext.Element<br />
禁止文本选择<br />
<br />
up( String selector, [Number/Mixed maxDepth] ) : Ext.Element<br />
通过样式选择器selector选择祖先节点<br />
<br />
update( String html, [Boolean loadScripts], Function callback ) : Ext.Element<br />
利用html更新当前节点内容，loadScripts指示html中如果有script，是否需要运行,这是一个innerHTML的一个老老老问题了<br />
<br />
wrap( [Object config], [Boolean returnDom] ) : HTMLElement/Element<br />
用另一个元素config包含自己<img src ="http://www.blogjava.net/super2/aggbug/237565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:14 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]EXT核心API详解(一)-Ext javascript </title><link>http://www.blogjava.net/super2/archive/2008/10/30/237563.html</link><dc:creator>淘声依旧</dc:creator><author>淘声依旧</author><pubDate>Thu, 30 Oct 2008 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/super2/archive/2008/10/30/237563.html</guid><wfw:comment>http://www.blogjava.net/super2/comments/237563.html</wfw:comment><comments>http://www.blogjava.net/super2/archive/2008/10/30/237563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/super2/comments/commentRss/237563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/super2/services/trackbacks/237563.html</trackback:ping><description><![CDATA[Ext类<br />
addBehaviors( Object obj ) : void<br />
对选择的元素 应用事件侦听器,事件名以@附加在结尾,例如<br />
addBehaviors({<br />
&nbsp;&nbsp;  // id=foo下所有的a标签加入click事件<br />
&nbsp;&nbsp;  '#foo a@click' : function(e, t){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // do something<br />
&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;  // 用,分隔多个选择器<br />
&nbsp;&nbsp;  '#foo a, #bar span.some-class@mouseover' : function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // do something<br />
&nbsp;&nbsp;  }<br />
});<br />
<br />
<br />
apply( Object obj, Object config, Object defaults ) : Object<br />
从config拷贝所有的属性到obj,如果有defaults参数,也将拷贝其属性到obj<br />
<br />
applyIf( Object obj, Object config ) : Object<br />
从config拷贝所有属性至obj(如果obj未定义相应属性)<br />
<br />
decode(Object obj) : String<br />
编码一个对象/数组或其它值为一个json格式字符串(支持对象,数组,日期,字符串)<br />
<br />
destroy( Mixed arg1, Mixed (optional), Mixed (optional) ) : void<br />
尝试去移除每个传入的对象,包括DOM,事件侦听者,并呼叫他们的destroy方法(如果存在)<br />
<br />
<br />
each( Array/NodeList/Mixed array, Function fn, Object scope ) : void<br />
利用array中的每个元素迭代调用fn.直到fn返回假,调用格式fn.call(scope || array[i], array[i], i, array);<br />
<br />
<br />
encode(String json) : Object<br />
将一个json格式字符串反序列化为对象<br />
<br />
escapeRe( String str ) : String<br />
为字符串正则编码将.在*+?^${}()|[]/\字符前加\<br />
<br />
extend( Object subclass, Object superclass, [Object overrides] ) : void<br />
从superclass类继承subclass,overrides参数是要重载的方法列表,详见override<br />
<br />
fly( String/HTMLElement el, [String named] ) : Element<br />
得到全局共享的一个浮动元素el,如果有多个浮动元素可以使用命名以避免潜在的冲突<br />
<br />
get( Mixed el ) : Element<br />
得到一个Element对象,参数可以是id或DOM节点或已存在的Element对象<br />
<br />
getBody() : Element<br />
得到当前文档的body对象<br />
<br />
getCmp( String id ) : Component<br />
通过id得到一个Component对象<br />
<br />
<br />
getDoc() : Element<br />
得到当前文档<br />
<br />
getDom( Mixed el ) : HTMLElement<br />
通过id或节点或Element对象返回一个DOM节点<br />
<br />
<br />
id( [Mixed el], [String prefix] ) : String<br />
为对象el生成一个惟一id,如果对象本身已有id,将不会被改变(可以使用前导符prefix)<br />
<br />
<br />
isEmpty( Mixed value, [Boolean allowBlank] ) : Boolean<br />
判断值是否为空,null, undefined或空字符串将返回真,如果allowBlank定义为真,空字符串将不被视为空<br />
<br />
namespace( String namespace1, String namespace2, String etc ) : void<br />
创建一个命名空间,例<br />
Ext.namespace('Company', 'Company.data');<br />
Company.Widget = function() { ... }<br />
Company.data.CustomStore = function(config) { ... }<br />
<br />
num( Mixed value, Number defaultValue ) : Number<br />
将value转为数值,如果value不是合法的数值类型,将返回defaultValue,其实defaultValue并不一定要求是数值类型,只要你愿意<br />
<br />
<br />
onReady( Function fn, Object scope, boolean override ) : void<br />
当文档准备好了之后引发fn,发生在page的onload事件之前,并且图片此时都还没有载入,scope定义执有者,override定义scope是否有默认的选择<br />
<br />
<br />
override( Object origclass, Object overrides ) : void<br />
利用overrides重写origclass的方法,例<br />
Ext.override(MyClass, {<br />
&nbsp;&nbsp;&nbsp;  newMethod1: function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // etc.<br />
&nbsp;&nbsp;&nbsp;  },<br />
&nbsp;&nbsp;&nbsp;  newMethod2: function(foo){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // etc.<br />
&nbsp;&nbsp;&nbsp;  }<br />
});<br />
<br />
query( String path, [Node root] ) : Array<br />
通过path,在root中选择节点数组,path可以是以下四种选择器之一<br />
[元素选择器] 例:<br />
* 任意节点<br />
E 一个E标签元素<br />
E F 祖先节点为E的F节点<br />
E &gt; F 或 E/F 父节点为E的F节点<br />
E + F 前一个兄弟节点为E的F节点<br />
E ~ F 前面的兄弟节点中有E的F节点<br />
[属性选择器] 例:<br />
E[foo] 有foo属性的E节点<br />
E[foo=bar] 有foo属性值为bar的E节点<br />
E[foo^=bar] foo属性以bar开始的E节点<br />
E[foo$=bar] foo属性以bar结尾的E节点<br />
E[foo*=bar] foo属性中有bar字符串的E节点<br />
E[foo%=2] foo属性能被2整除的E节点<br />
E[foo!=bar] foo属性值不为bar的E节点<br />
[伪类选择器] 例:<br />
E:first-child E节点是父节点中第一个子节点<br />
E:last-child E节点是父节点中最后一个子节点<br />
E:nth-child(n) E是父节点中每n个节点<br />
E:nth-child(odd) E是父节点中的奇数节点<br />
E:nth-child(even) E是父节点中的偶数节点<br />
E:only-child E是父节点中惟一的子节点<br />
E:checked checked属性为真的节点<br />
E:first 子孙节点中的第一个E节点<br />
E:last 子孙节点中的最后一个E节点<br />
E:nth(n) 子孙节点中的第n个E节点<br />
E:odd E:nth-child(odd)的简写<br />
E:even E:nth-child(even)的简写<br />
E:contains(foo) innerHTML属性中含有foo的E节点<br />
E:nodeValue(foo) E节点中包含一个值为foo的文本节点<br />
E:not(S) 不匹配简单选择器S的E节点<br />
E:has(S) 有能匹配简单选择器S的子节点的E节点<br />
E:next(S) 下一个兄弟节匹配简单选择器S的E节点<br />
E:prev(S) 前一个兄弟节匹配简单选择器S的E节点<br />
type( Mixed object ) : String<br />
判断对象类型,如果不是下列值之一将返回false<br />
[样式选择器] 例:<br />
E{display=none} display属性值为none的E节点<br />
E{display^=none} display属性值以none开始的E节点<br />
E{display$=none} display属性值以none结束的E节点<br />
E{display*=none} display属性值含有none子字串的E节点<br />
E{display%=2} display属性值能被2整除的E节点<br />
E{display!=none} display属性值不等于none的E节点<br />
<br />
<br />
select( String/Array selector, [Boolean unique], [HTMLElement/String
root] ) :CompositeElementLite/CompositeElement<br />
在root内通过样式选择器或元素数组selector选择元素或元素列表,unique指示是否只选择惟一值<br />
<br />
urlDecode( String string, [Boolean overwrite] ) : Object<br />
将url格式字符串string解码为json对象,overwrite参数指示是否不重写已存在的对象,例<br />
Ext.urlDecode("foo=1&amp;bar=2"); //返回 {foo: 1, bar: 2} <br />
Ext.urlDecode("foo=1&amp;bar=2&amp;bar=3&amp;bar=4"); //返回 {foo: 1, bar: 4}.<br />
Ext.urlDecode("foo=1&amp;bar=2&amp;bar=3&amp;bar=4", true); //返回 {foo: 1, bar: [2, 3, 4]}.<br />
<br />
urlEncode( Object o ) : String<br />
将json对象编码为url格式字符串,参见urlDecode<br />
&nbsp;&nbsp;&nbsp;  <br />
type( Mixed object ) : String<br />
得到object类型,如果不为以下列举值之一则返回false<img src ="http://www.blogjava.net/super2/aggbug/237563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/super2/" target="_blank">淘声依旧</a> 2008-10-30 12:13 <a href="http://www.blogjava.net/super2/archive/2008/10/30/237563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>