??xml version="1.0" encoding="utf-8" standalone="yes"?>一区二区在线观看视频在线观看,在线精品视频一区,综合伊人久久http://www.aygfsteel.com/ocean07000814/category/40909.html共同探讨STRUTS#HIBERNATE#SPRING#EJB{技?/description>zh-cnWed, 23 Mar 2016 09:57:45 GMTWed, 23 Mar 2016 09:57:45 GMT60easyui-progressbar实例Q?/title><link>http://www.aygfsteel.com/ocean07000814/articles/429780.html</link><dc:creator>非洲白?/dc:creator><author>非洲白?/author><pubDate>Wed, 23 Mar 2016 07:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/ocean07000814/articles/429780.html</guid><wfw:comment>http://www.aygfsteel.com/ocean07000814/comments/429780.html</wfw:comment><comments>http://www.aygfsteel.com/ocean07000814/articles/429780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ocean07000814/comments/commentRss/429780.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ocean07000814/services/trackbacks/429780.html</trackback:ping><description><![CDATA[jspQ?lt;div id="p" class="easyui-progressbar" style="width:400px;"></div><br /><br />jsQ?br /><div>var timerId;</div><div>// 初始化方?/div><div>function init(){</div><div><span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span>//每隔0.5U自动调用方法,实现q度条的实时更新</div><div><span style="white-space:pre"> </span>timerId=window.setInterval(getProgress,500);</div><div><span style="white-space:pre"> </span>$.ajax({</div><div><span style="white-space:pre"> </span>    dataType: "json",</div><div><span style="white-space:pre"> </span>    method: "post",</div><div><span style="white-space:pre"> </span>    url: contextPath+"/XXXX/clearProgress.do"</div><div><span style="white-space:pre"> </span>})</div><div><span style="white-space:pre"> </span>$("#p").show();</div><div><span style="white-space:pre"> </span>$('#p').window({</div><div><span style="white-space:pre"> </span>title:'q度?,</div><div><span style="white-space:pre"> </span>width:420,</div><div><span style="white-space:pre"> </span>height:50,</div><div><span style="white-space:pre"> </span>modal:true,</div><div><span style="white-space:pre"> </span>minimizable:false,</div><div><span style="white-space:pre"> </span>maximizable: false,</div><div><span style="white-space:pre"> </span>closed: false,</div><div><span style="white-space:pre"> </span>collapsible:false</div><div><span style="white-space:pre"> </span>});</div><div>};</div><div>function getProgress()</div><div>{</div><div><span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span>$.ajax({</div><div><span style="white-space:pre"> </span>    dataType: "json",</div><div><span style="white-space:pre"> </span>    method: "post",</div><div><span style="white-space:pre"> </span>    url: contextPath+"/XXX/getProgress.do"</div><div><span style="white-space:pre"> </span>}).done(function(data){</div><div><span style="white-space:pre"> </span>if(data.processInt>=100){</div><div>            window.clearInterval(timerId);</div><div>            $('#p').window('close');</div><div>         }</div><div>         $('#p').progressbar('setValue',data.processInt);</div><div>    }).fail(function(){</div><div>    <span style="white-space:pre"> </span>$.messager.alert('告警',"本次操作p|Q请重新操作",'error');</div><div><span style="white-space:pre"> </span>return false;</div><div>    });</div><div>}</div><br />javaQ?br /><div>int processInt = 0;</div><div>    /**</div><div>     * </div><div>     * ??</div><div>     * @author </div><div>     * @param </div><div>     * @param </div><div>     * @return</div><div>     * @see [cR类#Ҏ、类#成员]</div><div>     */</div><div>    @RequestMapping(value = "/clearProgress", method = RequestMethod.POST)</div><div>    public @ResponseBody void clearProgress()</div><div>    {</div><div>        processInt = 0;</div><div>    }</div><div>    /**</div><div>     * </div><div>     * ??</div><div>     * @author </div><div>     * @param </div><div>     * @param </div><div>     * @return</div><div>     * @see [cR类#Ҏ、类#成员]</div><div>     */</div><div>    @RequestMapping(value = "/getProgress", method = RequestMethod.POST)</div><div>    public @ResponseBody Map<String, Object> getProgress()</div><div>    {</div><div>        Map<String, Object> map = new HashMap<String, Object>();</div><div>        try</div><div>        {</div><div>            Random random=new Random();</div><div>            processInt += random.nextInt(10);</div><div>        }</div><div>        catch (Exception e)</div><div>        {</div><div>            log.error("Exception:", e);</div><div>        }</div><div>        map.put("processInt", processInt);</div><div>        return map;</div><div>    }<br /><br />实际目中,只要后台处理的q程的进度实时传递给公共变量processInt 卛_?/div><img src ="http://www.aygfsteel.com/ocean07000814/aggbug/429780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ocean07000814/" target="_blank">非洲白?/a> 2016-03-23 15:05 <a href="http://www.aygfsteel.com/ocean07000814/articles/429780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr动态加载下拉框http://www.aygfsteel.com/ocean07000814/articles/352886.html非洲白?/dc:creator>非洲白?/author>Thu, 23 Jun 2011 09:36:00 GMThttp://www.aygfsteel.com/ocean07000814/articles/352886.htmlhttp://www.aygfsteel.com/ocean07000814/comments/352886.htmlhttp://www.aygfsteel.com/ocean07000814/articles/352886.html#Feedback0http://www.aygfsteel.com/ocean07000814/comments/commentRss/352886.htmlhttp://www.aygfsteel.com/ocean07000814/services/trackbacks/352886.htmljava文g中增加下列:
public String method(String id){
  XXXLogic logic = new XXXLogic ();
  try {
   XXList list = logic.getList(id);
   return list.toJSONString();   
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

 
在jsp面中适当地方Q通过dwr调用后天java文gQƈ对返回json对象做适当处理卛_?/p>

XXXXListener.method(result.id+ "",{
       callback : function(data) {
        if (data) {
         var json = window.eval(data);
         DWRUtil.removeAllOptions(下拉框的对象);
         json.splice(0,0,{departmentid:'',departmentname:'-------请选择------'});
         DWRUtil.addOptions('dept2',json,'departmentid','departmentname');
        }
       }
      });



]]>
dwr框架(菜鸟入门) 转蝲http://www.aygfsteel.com/ocean07000814/articles/311810.html非洲白?/dc:creator>非洲白?/author>Wed, 03 Feb 2010 07:21:00 GMThttp://www.aygfsteel.com/ocean07000814/articles/311810.htmlhttp://www.aygfsteel.com/ocean07000814/comments/311810.htmlhttp://www.aygfsteel.com/ocean07000814/articles/311810.html#Feedback0http://www.aygfsteel.com/ocean07000814/comments/commentRss/311810.htmlhttp://www.aygfsteel.com/ocean07000814/services/trackbacks/311810.html  

DWR采取了一个类似AJAX的新Ҏ来动态生成基于JAVAcȝJavaScript代码.q样WEB开发h员就可以在JavaScript里用Java代码像它们是浏览器的本C?客户端代?一?但是Java代码q行在WEB服务器端而且可以自由讉KWEB 服务器的资源.Z安全的理?WEB开发者必适当地配|哪些Javacd以安全的被外部?

要用dwr要先下蝲http://getahead.org/dwr/
    下蝲内容
    DownloadVersion 2.0.3Size
    JAR File: dwr.jar(489Kb)
    WAR File:dwr.war(2.14Mb)
    Sources:dwr-2.0.3-src.zip (20.78Mb)

  首先看下工程里面:

  多了dwr.jar(dwr jar?,dwr.xml(dwr的配|文?,dwr20.dtd(在编辑xml配置文gӞ提供自动提示功能)Q其实web.xml配置文g也配|了dwr的servletQ来看下Q?/p>

  至于q个urlZ么还要用"/dwr/*"q不是很清楚Q我想的是如果客L有请求过来经qdwr的都被指定的servler处理Q个人理解)?/p>

  在来看下dwr.xml的配|:

  U线框的是关于dwr提示的配|,里面蓝线框的是上面提到的dwr20.dtd的\径,如果路径或者文件名不对Q那么前面就会出现警告:

 如果出错了也无所谓,只不q是不能提示Q如果你能把q写节点C的话Q那׃需要了Q否则就把dwr20.dtd拯Cdwr.xml相同的目录下?/p>

  在看重要的部分dwr的节点:

           <allow>标签中包括可以暴露给javascript讉K的东ѝ?/font>

           <create>标签中指定javascript中可以访问的javac?/font>Q? q定义DWR应当如何获得要进行远E的cȝ实例。creator="new"属性指定javacd例的生成方式Qnew意味着DWR应当调用cȝ默认构? 函数来获得实例,其他的还有spring方式Q通过与IOC容器Springq行集成来获得实例等{。javascript="sayHello"属性指 定javascript代码讉K对象时用的名称?/font>

            <param>nameq里一般用class指一个类Qvalue指类的全名,包括包名?/font>

  好了配置文g我们做好了Q在来看看jsp中在JavaScript中所做的配置?/p>

  W一个是dwr的引擎js文gQ第二个是用戯p讉Kjava的类的js文g?/p>

在来看看JavaScript调用javacȝҎ

  注意q里?font color="#ff0000">sayHelloq有上面配置?font color="#ff0000">sayHello.jsQ文件名Q要和dwr.xml中配|?font color="#ff0000">JavaScript的名字要相同Q否则就报错?/p>

下来看下javacM的方法?/p>

 

  在上面的JavaScript中有人就想问Qؓ什么调用Hello的方法时要传入一个函数。来说下Q第一个是javaҎ的参敎ͼW二个方法是回调函数Q这个函数是负责接受JavaScript调用javacdq回的结果?/p>

  到这里一个简单的dwr框架搞完了Q来先看下是否成功,启动jsp的服务器Q然后下图:

  点击查看文gQ先把里面所有的东西删除了,然后览你的jsp面Q就出出C?个文?/p>

  是我们刚才配置的两个js文gQ如果客L通过JavaScript调用sayHello.Hello的话Q那么就会由sayHello.js处理Q然后{交给engine引擎Q之后由引擎向服务器h?/p>

 来看下效果,

  很好Q看来运行很好,但是发现个问题,我刚才在配置文g里配|的com.dwr.sayHello中所有的Ҏ我们都可以访问的嘛?其实q不是这LQ要是不讄的话Q就默认允许调用所有的ҎQ要是想要指定的Ҏ允许讉KQ那么就要在dwr.xml中配|了。来看:

 

好了Q具体配|就是这L?/p>

]]>
AJAX JQueryhttp://www.aygfsteel.com/ocean07000814/articles/290492.html非洲白?/dc:creator>非洲白?/author>Mon, 10 Aug 2009 02:18:00 GMThttp://www.aygfsteel.com/ocean07000814/articles/290492.htmlhttp://www.aygfsteel.com/ocean07000814/comments/290492.htmlhttp://www.aygfsteel.com/ocean07000814/articles/290492.html#Feedback0http://www.aygfsteel.com/ocean07000814/comments/commentRss/290492.htmlhttp://www.aygfsteel.com/ocean07000814/services/trackbacks/290492.html阅读全文

]]>
jQuery中对html对象的操?/title><link>http://www.aygfsteel.com/ocean07000814/articles/289926.html</link><dc:creator>非洲白?/dc:creator><author>非洲白?/author><pubDate>Wed, 05 Aug 2009 04:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/ocean07000814/articles/289926.html</guid><wfw:comment>http://www.aygfsteel.com/ocean07000814/comments/289926.html</wfw:comment><comments>http://www.aygfsteel.com/ocean07000814/articles/289926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ocean07000814/comments/commentRss/289926.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ocean07000814/services/trackbacks/289926.html</trackback:ping><description><![CDATA[jQueryQjavascriptQ中对html对象的操作:<br /> <br /> $("input[@name=prj]").val()Q取得input标签下面的属性等于prj的对象的倹{?br /> <html:text name="Form" property="prj"/><br /> <br />  $("select[@name=sub]").val():取得select标签下面的属性等于sub的对象的倹{?br /> <html:select name="Form" property="sub" /><br /> <br /> $('#proId').attr("value", value1)QJSP中ID为proId的对象,它的D为value1?br /> $('#proId').attr("disabled", "true")Q设|ؓ不能~辑?br /> $('#proId').removeAttr("disabled")Q设|ؓ可编辑?br /> <br /> <br /> jQuery?('#proId') {同?javascript中document.getElementById("proId");<br /> <br /> <img src ="http://www.aygfsteel.com/ocean07000814/aggbug/289926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ocean07000814/" target="_blank">非洲白?/a> 2009-08-05 12:36 <a href="http://www.aygfsteel.com/ocean07000814/articles/289926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery介绍Q自我学习)http://www.aygfsteel.com/ocean07000814/articles/289819.html非洲白?/dc:creator>非洲白?/author>Tue, 04 Aug 2009 09:48:00 GMThttp://www.aygfsteel.com/ocean07000814/articles/289819.htmlhttp://www.aygfsteel.com/ocean07000814/comments/289819.htmlhttp://www.aygfsteel.com/ocean07000814/articles/289819.html#Feedback2http://www.aygfsteel.com/ocean07000814/comments/commentRss/289819.htmlhttp://www.aygfsteel.com/ocean07000814/services/trackbacks/289819.html jQueryq国hJohn Resig创徏Q至今已吸引了来自世界各地的众多javascript高手加入其teamQ包括来自d国的J&ouml;rn ZaeffererQ罗马尼亚的Stefan Petre{等?br /> jQuery是prototype之后又一个优U的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更的代码,做更多的事情?br /> 它是轻量U的js?压羃后只?1k) Q这是其它的js库所不及的,它兼容CSS3Q还兼容各种览?QIE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+Q?br /> jQuery是一个快速的Q简z的javaScript库,使用戯更方便地处理HTML documents、events、实现动L果,q且方便Cؓ|站提供AJAX交互?br /> jQueryq有一个比较大的优势是Q它的文档说明很全,而且各种应用也说得很详细Q同时还有许多成熟的插g可供选择?br /> jQuery能够使用Lhtml保持代码和html内容分离Q也是_不用再在html里面插入一堆js来调用命令了Q只需定义id卛_?br /> Jquery是prototype之后又一个优U的Javascrīpt框架。对 prototype我用不多,单了解过。但使用上jquery之后Q马上被她的优雅吸引住了。有Z用这L一比喻来比较prototype? jqueryQprototype像JavaQ而jquery像ruby.实际上我比较喜欢javaQ少接触Ruby |了Q但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作ؓ自己唯一的框架类包。用其间也有一点点心得Q其实这些心得, 在jquery的文档上面也可能有讲Q不q还是记下来Q以备忘|?

一Q找C了!

q记?()q个东西吧?无论prototypeq是DWR都用了q个函数代替document.getElementById()。没错,jquery也跟风了。ؓ辑ֈdocument.getElementById()的目的,jquery是这样写的:
代码
var someElement = $("#myId");
看v来比其他两个框架的要多了一?Q好Q看看下面的用法Q?
代码
$("div p"); // (1)
$("div.container"); // (2)
$("div #msg"); // (3)
$("table a",context); // (4)
在prototype里看q这L写法吗?W一行代码得到所有标{下的P元素。第二行代码得到class 为container的元?W三行代码得到标{下面id为msg的元素。第四行代码得到contextZ下文的table里面所有的q接元素?
如果你熟悉CSSQ你会觉得这些写法很眼熟Q对了。正是。看出奥妙了吧。jquery是通过q样的方式来扑ֈDom对象里面的元素。跟CSS的选择器相cM?

二,Jquery对象Q?/h2> jquery提供了很多便利的函数Q如each(fn)Q但是用这些函数的前提是:你用的对象是Jquery对象。一个Dom对象成ؓ一个Jquery对象很简单,通过下面一些方式(只是一部分Q:
代码
var a = $("#cid");
var b = $("hello");
var c = document.createElement("table");
var tb = $&copy;;

三,代替body标签的onload

q个惯例Q也许是除了$()之外Q用得最多的地方了。下面一D代码:
代码
$(document).ready(function(){
alert("hello");
});(1)
<body onload="alert('hello');">Q?Q?
上面两段代码是等L。但代码1的好处是做到表现和逻辑分离。ƈ且可以在不同的js文g中做? 同的操作Q即$(document).ready (fn)可以在一个页面中重复出现Q而不会冲H。基本上Jqeury的很多plugin都是利用q个Ҏ,正因个特性,多个plugin共同使用? 来,在初始化时不会发生冲H?
不管怎么_q个惯例可以分离javascrīpt与HTML。推荐用?

四,事g机制

我大量用的事g可能是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascrīpt代码与html代码分离Q保持HTML的清z,q可以很L地绑定事Ӟ甚至你可以不知道“? ?#8221;q个名词?
代码
$(document).ready(function(){
$("#clear").click(function(){
alert("i am about to clear the table");
});
$("form[0]").submit(validate);
});
function validate(){
//do some form validation
}

五,同一函数实现set

代码
$("#msg").html();
$("#msg").html("hello");
上面两行代码Q调用了同样的函数。但l果却差别很大?
W一行是q回指定元素的HTML|W二行则是将helloq串字符讄到指定元素中。jquery的函数大部分有这LҎ?

六,ajax

q是一个ajax横行的时代。多hQ了不了解ajax的都跟着用上一把。呵。用jquery实现ajax同样单异?
代码
$.get("search.do",{id:1},rend);
function rend(xml){
alert(xml);
} (1)
$.post("search.do",{id:1},rend);
function rend(xml){
alert(xml);
} (2)
$("#msg").ajaxStart(function(){
this.html("正在加蝲。。。?);
});(3)
$("#msg").ajaxSuccess(function(){
this.html("加蝲完成Q?);
});(4)
q些都是较常用的ҎQget和post用法一栗第一个参数是异步h的urlQ第二个为参敎ͼW三个回调方法?
3Q?的方法会在指定的Dom对象上绑定响应ajax执行的事件。当Ӟjquery的AJAX相关的函C仅是q些Q有兴趣可以ȝI再多?

七,渐入淡出

代码
$("#msg").show("fast");
$("#msg").hide("slow");
没错Q上面两行代码已l分别实C一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一L动态加载通知条,用jquery那么简单。两个函数接受的参数除了快慢{,q可以接收整型,作ؓ渐入或E出的完成旉Q单位ؓMS?

八,plugin

q也是一个插件的时代?
jquery插gl我的感觉清一色的清洁Q简单。如JtipQ要使用它的功能Q只需要在你的元素的class上加上Jtip,q引入jtip.js及其样式卛_以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已l有了很多很好,很精彩的插g?
写得很烂。可能大家看不出jquery的好处。嗯Q光听是没用的,试用一下吧。你会发觉很有趣?
暂时告一D落吧。待有新的发现再来分享?
加一些Jquery的资源:
http://www.visualjquery.com/index.xml 很好的API查询站点
http://jquery.com/demo/thickbox/ 知道lightBox吧,看看Jquery是怎样实现相同的东?
http://jquery.org.cn/visual/cn/index.xml //不错的JQUERY 中文学习 推荐
jquery来源
jQueryq国hJohn Resig创徏Q至今已吸引了来自世界各地的众多javascript高手加入其teamQ包括来自d国的J&ouml;rn ZaeffererQ罗马尼亚的Stefan Petre{等?
jQuery是prototype之后又一个优U的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更的代码,做更多的事情?
它是轻量U的js?压羃后只?1k) Q这是其它的js库所不及的,它兼容CSS3Q还兼容各种览?QIE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+Q?
jQuery是一个快速的Q简z的javaScript库,使用戯更方便地处理HTML documents、events、实现动L果,q且方便Cؓ|站提供AJAX交互?
jQueryq有一个比较大的优势是Q它的文档说明很全,而且各种应用也说得很详细Q同时还有许多成熟的插g可供选择?
jQuery能够使用Lhtml保持代码和html内容分离Q也是_不用再在html里面插入一堆js来调用命令了Q只需定义id卛_?
jQuery的最新release版本?.2.6?br /> 官方下蝲地址为:http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js
微Y的visual studio 2008 sp1支持对jquery的动态提C,只要在代码页导入对应的vsdoc脚本可以?br /> 目前为止QjQuery的最新版本ؓ1.3.2

]]>
Ext.data.Store的基本用?/title><link>http://www.aygfsteel.com/ocean07000814/articles/287262.html</link><dc:creator>非洲白?/dc:creator><author>非洲白?/author><pubDate>Sat, 18 Jul 2009 09:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/ocean07000814/articles/287262.html</guid><wfw:comment>http://www.aygfsteel.com/ocean07000814/comments/287262.html</wfw:comment><comments>http://www.aygfsteel.com/ocean07000814/articles/287262.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ocean07000814/comments/commentRss/287262.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ocean07000814/services/trackbacks/287262.html</trackback:ping><description><![CDATA[<pre>Ext.data.Store是EXT中用来进行数据交换和数据交互的标准中间gQ无论是Gridq是ComboBoxQ都是通过它实现数据读取、类型{换、排序分和搜烦{操作的?br /> <br /> Ext.data.Store中有一个Ext.data.Record数组Q所有数据都存放在这些Ext.data. Record实例中,为后面的d和修Ҏ作做准备?br /> <br /> <strong style="color: blue;">Ext.data.Store的基本用?/strong><br /> <br /> 在用之前,首先要创Z个Ext.data.Store的实例,如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> data = [   </span></span></li> <li><span>    [</span><span id="wmqeeuq" class="string">'boy'</span><span>, 0],   </span></li> <li id="wmqeeuq" class="alt"><span>    [</span><span id="wmqeeuq" class="string">'girl'</span><span>, 1]   </span></li> <li><span>];   </span></li> <li id="wmqeeuq" class="alt"><span>  </span></li> <li><span id="wmqeeuq" class="keyword">var</span><span> store = </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.Store({   </span></li> <li id="wmqeeuq" class="alt"><span>    proxy: </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.MemoryProxy(data),   </span></li> <li><span>    reader: </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord)   </span></li> <li id="wmqeeuq" class="alt"><span>});   </span></li> <li><span>  </span></li> <li id="wmqeeuq" class="alt"><span>store.load();  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> data = [  </span></span></li> <li id="wmqeeuq" class=""><span>    [<span id="wmqeeuq" class="string">'boy'</span><span>, 0],  </span></span></li> <li id="wmqeeuq" class="alt"><span>    [<span id="wmqeeuq" class="string">'girl'</span><span>, 1]  </span></span></li> <li id="wmqeeuq" class=""><span>];  </span></li> <li id="wmqeeuq" class="alt"><span>  </span></li> <li id="wmqeeuq" class=""><span><span id="wmqeeuq" class="keyword">var</span><span> store = </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.Store({  </span></span></li> <li id="wmqeeuq" class="alt"><span>    proxy: <span id="wmqeeuq" class="keyword">new</span><span> Ext.data.MemoryProxy(data),  </span></span></li> <li id="wmqeeuq" class=""><span>    reader: <span id="wmqeeuq" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord)  </span></span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> <li id="wmqeeuq" class=""><span>  </span></li> <li id="wmqeeuq" class="alt"><span>store.load();  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">var data = [ ['boy', 0], ['girl', 1] ]; var store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.ArrayReader({}, PersonRecord) }); store.load(); </textarea><br /> <br /> 每个store最需要两个组件的支持Q分别是proxy和readerQproxy用于从某个途径d原始数据Qreader用于原始数据{换成Record实例?br /> <br /> q里我们使用的是Ext.data.MemoryProxy和Ext.data.ArrayReaderQ将data数组中的数据转换成对应的几个PersonRecord实例Q然后放入store中?br /> <br /> store创徏完毕之后Q执行store.load()实现q个转换q程?br /> <br /> l过转换之后Qstore里的数据可以提供给Grid或ComboBox使用了,q就是Ext.data. Store的最基本用法?br /> <br /> <br /> <strong style="color: blue;">Ext.data.StoreҎ据进行排?/strong><br /> <br /> <br /> Ext.data.Store提供了一pd属性和函数Q利用它们对数据q行排序操作?br /> <br /> 可以在创建Ext.data.Store时用sortInfo参数指定排序的字D和排序方式Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> store = </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.Store({   </span></span></li> <li><span>    proxy: </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.MemoryProxy(data),   </span></li> <li id="wmqeeuq" class="alt"><span>    reader: </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord),   </span></li> <li><span>    sortInfo: {field: </span><span id="wmqeeuq" class="string">'name'</span><span>, direction: </span><span id="wmqeeuq" class="string">'DESC'</span><span>}   </span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> store = </span><span id="wmqeeuq" class="keyword">new</span><span> Ext.data.Store({  </span></span></li> <li id="wmqeeuq" class=""><span>    proxy: <span id="wmqeeuq" class="keyword">new</span><span> Ext.data.MemoryProxy(data),  </span></span></li> <li id="wmqeeuq" class="alt"><span>    reader: <span id="wmqeeuq" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord),  </span></span></li> <li id="wmqeeuq" class=""><span>    sortInfo: {field: <span id="wmqeeuq" class="string">'name'</span><span>, direction: </span><span id="wmqeeuq" class="string">'DESC'</span><span>}  </span></span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">var store = new Ext.data.Store({ proxy: new Ext.data.MemoryProxy(data), reader: new Ext.data.ArrayReader({}, PersonRecord), sortInfo: {field: 'name', direction: 'DESC'} }); </textarea><br /> <br /> q样Q在store加蝲数据之后Q就会自动根据name字段q行降序排列。对store使用store.setDefaultSort('name','DESC');也会辑ֈ同样效果?br /> <br /> 也可以在M时候调用sort()函数Q比如store.sort('name', 'DESC');Q对store中的数据q行排序?br /> <br /> 如果我们希望获得store的排序信息,可以调用getSortState()函数Q返回的是类似{field: "name", direction: " DESC"}的JSON对象?br /> <br /> 与排序相关的参数q有remoteSortQ这个参数是用来实现后台排序功能的?br /> <br /> 当设|ؓremoteSort:trueӞstore会在向后台请求数据时自动加入sort和dir两个参数Q?br /> <br /> 分别对应排序的字D和排序的方式,由后台获取ƈ处理q两个参敎ͼ在后台对所需数据q行排序操作?br /> <br /> remoteSort:true也会D每次执行sort()旉要去后台重新加蝲数据Q而不能只Ҏ地数据进行排序?br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store从store中获取数?/strong><br /> <br /> 从store中获取数据有很多U途径Q可以依据不同的要求选择不同的函数?br /> <br /> 最直接的方法是Ҏrecord在store中的行号获得对应的recordQ得Crecord可以用get()函数获得里面的数据了Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.getAt(0).get(</span><span id="wmqeeuq" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.getAt(0).get(</span><span id="wmqeeuq" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.getAt(0).get('name') </textarea><br /> <br /> 通过q种方式Q我们可以遍历store中所有的recordQ依ơ得到它们的数据Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">for</span><span> (</span><span id="wmqeeuq" class="keyword">var</span><span> i = 0; i < store.getCount(); i++) {   </span></span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">var</span><span> record = store.getAt(i);   </span></li> <li id="wmqeeuq" class="alt"><span>    alert(record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>));   </span></li> <li><span>}  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">for</span><span> (</span><span id="wmqeeuq" class="keyword">var</span><span> i = 0; i < store.getCount(); i++) {  </span></span></li> <li id="wmqeeuq" class=""><span>    <span id="wmqeeuq" class="keyword">var</span><span> record = store.getAt(i);  </span></span></li> <li id="wmqeeuq" class="alt"><span>    alert(record.get(<span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> <li id="wmqeeuq" class=""><span>}  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">for (var i = 0; i < store.getCount(); i++) { var record = store.getAt(i); alert(record.get('name')); } </textarea><br /> <br /> Store.getCount()q回的是store中的所有数据记录,然后使用for循环遍历整个storeQ从而得到每条记录?br /> <br /> 除了使用getCount()的方法外Q还可以使用each()函数Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.each(</span><span id="wmqeeuq" class="keyword">function</span><span>(record) {   </span></span></li> <li><span>    alert(record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>));   </span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.each(</span><span id="wmqeeuq" class="keyword">function</span><span>(record) {  </span></span></li> <li id="wmqeeuq" class=""><span>    alert(record.get(<span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.each(function(record) { alert(record.get('name')); }); </textarea><br /> <br /> Each()可以接受一个函C为参敎ͼ遍历内部recordQƈ每个record作ؓ参数传递给function()处理?br /> <br /> 如果希望停止遍历Q可以让function()q回false?br /> <br /> 也可以用getRange()函数q箋获得多个recordQ只需要指定开始和l束位置的烦引|如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> records = store.getRange(0, 1);   </span></span></li> <li><span>  </span></li> <li id="wmqeeuq" class="alt"><span id="wmqeeuq" class="keyword">for</span><span> (</span><span id="wmqeeuq" class="keyword">var</span><span> i = 0; i < records.length; i++) {   </span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">var</span><span> record = records[i];   </span></li> <li id="wmqeeuq" class="alt"><span>    alert(record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>));   </span></li> <li><span>}  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> records = store.getRange(0, 1);  </span></span></li> <li id="wmqeeuq" class=""><span>  </span></li> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">for</span><span> (</span><span id="wmqeeuq" class="keyword">var</span><span> i = 0; i < records.length; i++) {  </span></span></li> <li id="wmqeeuq" class=""><span>    <span id="wmqeeuq" class="keyword">var</span><span> record = records[i];  </span></span></li> <li id="wmqeeuq" class="alt"><span>    alert(record.get(<span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> <li id="wmqeeuq" class=""><span>}  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">var records = store.getRange(0, 1); for (var i = 0; i < records.length; i++) { var record = records[i]; alert(record.get('name')); } </textarea><br /> <br /> <br /> 如果实不知道record的idQ也可以Ҏrecord本n的id从store中获得对应的recordQ如下面的代码所C?br /> <br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.getById(1001).get(</span><span id="wmqeeuq" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.getById(1001).get(</span><span id="wmqeeuq" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.getById(1001).get('name') </textarea><br /> <br /> <br /> EXTq提供了函数find()和findBy()Q可以利用它们对store中的数据q行搜烦Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch],[Boolean caseSensitive] )   </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch],[Boolean caseSensitive] )   </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch],[Boolean caseSensitive] ) </textarea><br /> <br /> <br /> 在这5个参CQ只有前两个是必ȝ?br /> <br /> W一个参数property代表搜烦的字D名Q?br /> <br /> W二个参数value是匹配用字符串或正则表达式;<br /> <br /> W三个参数startIndex表示从第几行开始搜?<br /> <br /> W四个参数anyMatch为trueӞ不必从头开始匹配;<br /> <br /> W五个参数caseSensitive为trueӞ会区分大写?br /> <br /> 如下面的代码所C:<br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> index = store.find(</span><span id="wmqeeuq" class="string">'name'</span><span>,</span><span id="wmqeeuq" class="string">'g'</span><span>);   </span></span></li> <li><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.getAt(index).get(</span><span id="wmqeeuq" class="string">'name'</span><span>));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span id="wmqeeuq" class="keyword">var</span><span> index = store.find(</span><span id="wmqeeuq" class="string">'name'</span><span>,</span><span id="wmqeeuq" class="string">'g'</span><span>);  </span></span></li> <li id="wmqeeuq" class=""><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.getAt(index).get(<span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">var index = store.find('name','g'); alert(store.getAt(index).get('name')); </textarea><br /> <br /> <br /> 与find()函数对应的findBy()函数的定义格式如下:<br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>findBy( Function fn, [Object scope], [Number startIndex] ) : Number  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>findBy( Function fn, [Object scope], [Number startIndex] ) : Number  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">findBy( Function fn, [Object scope], [Number startIndex] ) : Number </textarea><br /> <br /> <br /> findBy()函数允许用户使用自定义函数对内部数据q行搜烦?br /> <br /> fnq回trueӞ表示查找成功Q于是停止遍历ƈq回行号?br /> <br /> fnq回falseӞ表示查找p|Q即未找刎ͼQl遍历,如下面的代码所C?br /> <br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>index = store.findBy(</span><span id="wmqeeuq" class="keyword">function</span><span>(record, id) {   </span></span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;   </span></li> <li id="wmqeeuq" class="alt"><span>});   </span></li> <li><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.getAt(index).get(</span><span id="wmqeeuq" class="string">'name'</span><span>));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>index = store.findBy(</span><span id="wmqeeuq" class="keyword">function</span><span>(record, id) {  </span></span></li> <li id="wmqeeuq" class=""><span>    <span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> <li id="wmqeeuq" class=""><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.getAt(index).get(<span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">index = store.findBy(function(record, id) { return record.get('name') == 'girl' && record.get('sex') == 1; }); alert(store.getAt(index).get('name')); </textarea><br /> <br /> <br /> 通过findBy()函数Q我们可以同时判断record中的多个字段Q在函数中实现复杂逻辑?br /> <br /> 我们q可以用query和queryBy函数对store中的数据q行查询?br /> <br /> 与find和findBy不同的是Qquery和queryByq回的是一个MixCollection对象Q里面包含了搜烦得到的数据,如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>alert(store.query(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'boy'</span><span>));   </span></span></li> <li><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.queryBy(</span><span id="wmqeeuq" class="keyword">function</span><span>(record) {   </span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;   </span></li> <li id="wmqeeuq" class="alt"><span>}));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>alert(store.query(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'boy'</span><span>));  </span></span></li> <li id="wmqeeuq" class=""><span>  </span></li> <li id="wmqeeuq" class="alt"><span>alert(store.queryBy(<span id="wmqeeuq" class="keyword">function</span><span>(record) {  </span></span></li> <li id="wmqeeuq" class=""><span>    <span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="wmqeeuq" class="alt"><span>}));  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">alert(store.query('name', 'boy')); alert(store.queryBy(function(record) { return record.get('name') == 'girl' && record.get('sex') == 1; })); </textarea><br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store更新store中的数据</strong><br /> <br /> 可以使用add(Ext.data.Record[] records)向store末尾d一个或多个recordQ用的参数可以是一个record实例Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.add(</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="wmqeeuq" class="string">'other'</span><span>,   </span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0   </span></li> <li><span>}));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.add(</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class=""><span>    name: <span id="wmqeeuq" class="string">'other'</span><span>,  </span></span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0  </span></li> <li id="wmqeeuq" class=""><span>}));  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.add(new PersonRecord({ name: 'other', sex: 0 })); </textarea><br /> <br /> Add()的也可以d一个record数组Q如下面的代码所C:<br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.add([</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="wmqeeuq" class="string">'other1'</span><span>,   </span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0   </span></li> <li><span>}), </span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></li> <li id="wmqeeuq" class="alt"><span>    name: </span><span id="wmqeeuq" class="string">'other2'</span><span>,   </span></li> <li><span>    sex: 0   </span></li> <li id="wmqeeuq" class="alt"><span>})]);  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.add([</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class=""><span>    name: <span id="wmqeeuq" class="string">'other1'</span><span>,  </span></span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0  </span></li> <li id="wmqeeuq" class=""><span>}), <span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class="alt"><span>    name: <span id="wmqeeuq" class="string">'other2'</span><span>,  </span></span></li> <li id="wmqeeuq" class=""><span>    sex: 0  </span></li> <li id="wmqeeuq" class="alt"><span>})]);  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.add([new PersonRecord({ name: 'other1', sex: 0 }), new PersonRecord({ name: 'other2', sex: 0 })]); </textarea><br /> <br /> <br /> Add()函数每次都会新数据d到store的末,q就有可能破坏store原有的排序方式。如果希望根据store原来的排序方式将新数据插入到对应的位|,可以使用addSorted()函数。它会在d新数据之后立卛_storeq行排序Q这样就可以保证store中的数据有序地显C,如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.addSorted(</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="wmqeeuq" class="string">'lili'</span><span>,   </span></li> <li id="wmqeeuq" class="alt"><span>    sex: 1   </span></li> <li><span>}));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.addSorted(</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class=""><span>    name: <span id="wmqeeuq" class="string">'lili'</span><span>,  </span></span></li> <li id="wmqeeuq" class="alt"><span>    sex: 1  </span></li> <li id="wmqeeuq" class=""><span>}));  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.addSorted(new PersonRecord({ name: 'lili', sex: 1 })); </textarea><br /> <br /> store会根据排序信息查找这条record应该插入的烦引位|,然后Ҏ得到的烦引位|插入数据,从而实现对整体q行排序。这个函数需要预先ؓstore讄本地排序Q否则会不v作用?br /> <br /> 如果希望自己指定数据插入的烦引位|,可以使用insert()函数。它的第一个参数表C插入数据的索引位置Q可以用record实例或record实例的数l作为参敎ͼ插入之后Q后面的数据自动后移Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.insert(3, </span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="wmqeeuq" class="string">'other'</span><span>,   </span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0   </span></li> <li><span>}));   </span></li> <li id="wmqeeuq" class="alt"><span>  </span></li> <li><span>store.insert(3, [</span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></li> <li id="wmqeeuq" class="alt"><span>    name: </span><span id="wmqeeuq" class="string">'other1'</span><span>,   </span></li> <li><span>    sex: 0   </span></li> <li id="wmqeeuq" class="alt"><span>}), </span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({   </span></li> <li><span>    name: </span><span id="wmqeeuq" class="string">'other2'</span><span>,   </span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0   </span></li> <li><span>})]);  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.insert(3, </span><span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class=""><span>    name: <span id="wmqeeuq" class="string">'other'</span><span>,  </span></span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0  </span></li> <li id="wmqeeuq" class=""><span>}));  </span></li> <li id="wmqeeuq" class="alt"><span>  </span></li> <li id="wmqeeuq" class=""><span>store.insert(3, [<span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class="alt"><span>    name: <span id="wmqeeuq" class="string">'other1'</span><span>,  </span></span></li> <li id="wmqeeuq" class=""><span>    sex: 0  </span></li> <li id="wmqeeuq" class="alt"><span>}), <span id="wmqeeuq" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="wmqeeuq" class=""><span>    name: <span id="wmqeeuq" class="string">'other2'</span><span>,  </span></span></li> <li id="wmqeeuq" class="alt"><span>    sex: 0  </span></li> <li id="wmqeeuq" class=""><span>})]);  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.insert(3, new PersonRecord({ name: 'other', sex: 0 })); store.insert(3, [new PersonRecord({ name: 'other1', sex: 0 }), new PersonRecord({ name: 'other2', sex: 0 })]); </textarea><br /> <br /> <br /> 删除操作可以使用remove()和removeAll()函数Q它们分别可以删除指定的record和清I整个store中的数据Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.remove(store.getAt(0));   </span></span></li> <li><span>store.removeAll();  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.remove(store.getAt(0));  </span></span></li> <li id="wmqeeuq" class=""><span>store.removeAll();  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.remove(store.getAt(0)); store.removeAll(); </textarea><br /> <br /> <br /> store中没有专门提供修Ҏ一行record的操作,我们需要先从store中获取一个record。对q个record内部数据的修改会直接反映到store上,如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.getAt(0).set(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'xxxx'</span><span>);  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.getAt(0).set(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'xxxx'</span><span>);  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.getAt(0).set('name', 'xxxx'); </textarea><br /> <br /> <br /> 修改record的内部数据之后有两种选择Q执行rejectChanges()撤销所有修改,修改过的record恢复到原来的状态;执行commitChanges()提交数据修改。在执行撤销和提交操作之前,可以使用getModifiedRecords()获得store中修改过的record数组?br /> <br /> 与修Ҏ据相关的参数是pruneModifiedRecordsQ如果将它设|ؓtrueQ当每次执行删除或reload操作Ӟ都会清空所有修攏V这P在每ơ执行删除或reload操作之后QgetModifiedRecords()q回的就是一个空数组Q否则仍然会得到上次修改q的record记录<br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store加蝲及显C数?/strong><br /> <br /> store创徏好后Q需要调用load()函数加蝲数据Q加载成功后才能对store中的数据q行操作。load()调用的完整过E如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.load({   </span></span></li> <li><span>    params: {start:0,limit:20},   </span></li> <li id="wmqeeuq" class="alt"><span>    callback: </span><span id="wmqeeuq" class="keyword">function</span><span>(records, options, success){   </span></li> <li><span>        Ext.Msg.alert(</span><span id="wmqeeuq" class="string">'info'</span><span>, </span><span id="wmqeeuq" class="string">'加蝲完毕'</span><span>);   </span></li> <li id="wmqeeuq" class="alt"><span>    },   </span></li> <li><span>    scope: store,   </span></li> <li id="wmqeeuq" class="alt"><span>    add: </span><span id="wmqeeuq" class="keyword">true</span><span>  </span></li> <li><span>});  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.load({  </span></span></li> <li id="wmqeeuq" class=""><span>    params: {start:0,limit:20},  </span></li> <li id="wmqeeuq" class="alt"><span>    callback: <span id="wmqeeuq" class="keyword">function</span><span>(records, options, success){  </span></span></li> <li id="wmqeeuq" class=""><span>        Ext.Msg.alert(<span id="wmqeeuq" class="string">'info'</span><span>, </span><span id="wmqeeuq" class="string">'加蝲完毕'</span><span>);  </span></span></li> <li id="wmqeeuq" class="alt"><span>    },  </span></li> <li id="wmqeeuq" class=""><span>    scope: store,  </span></li> <li id="wmqeeuq" class="alt"><span>    add: <span id="wmqeeuq" class="keyword">true</span><span>  </span></span></li> <li id="wmqeeuq" class=""><span>});  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.load({ params: {start:0,limit:20}, callback: function(records, options, success){ Ext.Msg.alert('info', '加蝲完毕'); }, scope: store, add: true }); </textarea><br /> <br /> 1. params是在store加蝲时发送的附加参数?br /> <br /> 2. callback是加载完毕时执行的回调函敎ͼ它包?个参敎ͼrecords参数表示获得的数据,options表示执行load()时传递的参数Qsuccess表示是否加蝲成功?br /> <br /> 3. Scope用来指定回调函数执行时的作用域?br /> <br /> 4. Add为trueӞload()得到的数据会d在原来的store数据的末,否则会先清除之前的数据,再将得到的数据添加到store中?br /> <br /> 一般来_Z对store中的数据q行初始化,load()函数只需要执行一ơ。如果用params参数指定了需要用的参数Q以后再ơ执行reload()重新加蝲数据Ӟstore会自动用上ơload()中包含的params参数内容?br /> <br /> 如果有一些需要固定传递的参数Q也可以使用baseParams参数执行Q它是一个JSON对象Q里面的数据会作为参数发送给后台处理Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.baseParams.start = 0;   </span></span></li> <li><span>store.baseParams.limit = 20;  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.baseParams.start = 0;  </span></span></li> <li id="wmqeeuq" class=""><span>store.baseParams.limit = 20;  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.baseParams.start = 0; store.baseParams.limit = 20; </textarea><br /> <br /> 为store加蝲数据之后Q有时不需要把所有数据都昄出来Q这时可以用函数filter和filterBy对store中的数据q行qoQ只昄W合条g的部分,如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : </span><span id="wmqeeuq" class="keyword">void</span><span>  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : </span><span id="wmqeeuq" class="keyword">void</span><span>  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void </textarea><br /> <br /> <br /> filter()函数的用法与之前谈到的find()怼Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.filter(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'boy'</span><span>);  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.filter(</span><span id="wmqeeuq" class="string">'name'</span><span>, </span><span id="wmqeeuq" class="string">'boy'</span><span>);  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.filter('name', 'boy'); </textarea><br /> <br /> 对应的filterBy()与findBy()cMQ也可以在自定义的函C实现各种复杂判断Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.filterBy(</span><span id="wmqeeuq" class="keyword">function</span><span>(record) {   </span></span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;   </span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.filterBy(</span><span id="wmqeeuq" class="keyword">function</span><span>(record) {  </span></span></li> <li id="wmqeeuq" class=""><span>    <span id="wmqeeuq" class="keyword">return</span><span> record.get(</span><span id="wmqeeuq" class="string">'name'</span><span>) == </span><span id="wmqeeuq" class="string">'girl'</span><span> && record.get(</span><span id="wmqeeuq" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="wmqeeuq" class="alt"><span>});  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.filterBy(function(record) { return record.get('name') == 'girl' && record.get('sex') == 1; }); </textarea><br /> <br /> <br /> 如果惛_消过滤ƈ昄所有数据,那么可以调用clearFilter()函数Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.clearFilter();  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.clearFilter();  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.clearFilter(); </textarea><br /> <br /> <br /> 如果想知道store上是否设|了qo器,可以通过isFiltered()函数q行判断?br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store其他功能</strong><br /> <br /> 除了上面提到的数据获取、排序、更新、显C等功能外,storeq提供了其他一些功能函数?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array </textarea><br /> <br /> <br /> collect函数获得指定的dataIndex对应的那一列的数据Q当allowNull参数为trueӞq回的结果中可能会包含null、undefined或空字符Ԍ否则collect函数会自动将q些I数据过滤掉。当bypassFilter参数为trueӞcollect的结果不会受查询条g的媄响,无论查询条g是什么都会忽略掉Q返回的信息是所有的数据Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>alert(store.collect(</span><span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>alert(store.collect(</span><span id="wmqeeuq" class="string">'name'</span><span>));  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">alert(store.collect('name')); </textarea><br /> <br /> q样会获得所有name列的|CZ中返回的是包含了'boy'?girl'的数l?br /> <br /> getTotalCount()用于在翻|获得后台传递过来的数据L。如果没有设|翻,get- TotalCount()的结果与getCount()相同Q都是返回当前的数据LQ如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>alert(store.getTotalCount());  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>alert(store.getTotalCount());  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">alert(store.getTotalCount()); </textarea><br /> <br /> <br /> indexOf(Ext.data.Record record)和indexOfId(String id)函数Ҏrecord或record的id获得record对应的行P如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>alert(store.indexOf(store.getAt(1)));   </span></span></li> <li><span>alert(store.indexOfId(1001));  </span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>alert(store.indexOf(store.getAt(1)));  </span></span></li> <li id="wmqeeuq" class=""><span>alert(store.indexOfId(1001));  </span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">alert(store.indexOf(store.getAt(1))); alert(store.indexOfId(1001)); </textarea><br /> <br /> <br /> loadData(object data, [Boolean append])从本地JavaScript变量中读取数据,append为trueӞ读取的数据附加到原数据后,否则执行整体更新Q如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>store.loadData(data, </span><span id="wmqeeuq" class="keyword">true</span><span>);  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>store.loadData(data, </span><span id="wmqeeuq" class="keyword">true</span><span>);  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">store.loadData(data, true); </textarea><br /> <br /> Sum(String property, Number start, Number end):Number用于计算某一个列从start到end的dQ如下面的代码所C?br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c"> <li id="wmqeeuq" class="alt"><span><span>alert(store.sum(</span><span id="wmqeeuq" class="string">'sex'</span><span>));  </span></span></li> </ol> </div> <div id="wmqeeuq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmqeeuq" class="alt"><span><span>alert(store.sum(</span><span id="wmqeeuq" class="string">'sex'</span><span>));  </span></span></li> </ol> </div> <textarea style="display: none;" cols="50" rows="15" name="code" class="javascript:nocontrols">alert(store.sum('sex')); </textarea><br /> <br /> <br /> 如果省略参数start和endQ就计算全部数据的d?br /> <br /> storeq提供了一pd事gQ见下表Q,让我们可以ؓ对应操作讑֮操作函数?br /> </pre> <pre class="MsoNormal" style="margin: 6pt 0cm 3pt; text-indent: 0cm; line-height: normal; text-align: center;"><span style="color: #ff00ff;"><span style="font-size: 9pt; font-family: 黑体;">?/span><span style="font-size: 9pt; font-family: 黑体;"> </span><strong><span style="font-size: 9pt; font-family: Courier;" lang="EN-US">store</span></strong><span style="font-size: 9pt; font-family: 黑体;">提供的事?/span></span></pre> <pre> <table class="MsoNormalTable" style="width: 556px; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 0cm; line-height: normal; text-align: center;" align="center"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: 黑体;">事g?/span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 0cm; line-height: normal; text-align: center;" align="center"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: 黑体;">参  ?/span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">add</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Ext.data.Record[] records, Number index )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">beforelaod</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Object options )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">clear</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">datachanged</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">load</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Ext.data.Record[] records, Object options )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">loadexception</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">()</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">metachange</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Object meta. )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">remove</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Ext.data.Record record, Number index )</span></span></p> </td> </tr> <tr> <td style="padding: 0cm 5.4pt; width: 86.4pt; background-color: transparent;" valign="top" width="115"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">update</span></span></p> </td> <td style="padding: 0cm 5.4pt; width: 339.7pt; background-color: transparent;" valign="top" width="453"> <p class="MsoNormal" style="margin: 1.4pt 0cm; text-indent: 8pt; line-height: normal;"><span style="color: #ff00ff;"><span style="font-size: 8pt; font-family: Courier;" lang="EN-US">( Store this, Ext.data.Record record, String operation )</span></span></p> </td> </tr> </tbody> </table> </pre> xQstore和record{组件已l讲解完毕,下面我们主要讨论一下常用的proxy和readerlg? <img src ="http://www.aygfsteel.com/ocean07000814/aggbug/287262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ocean07000814/" target="_blank">非洲白?/a> 2009-07-18 17:53 <a href="http://www.aygfsteel.com/ocean07000814/articles/287262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext.data.Store介绍http://www.aygfsteel.com/ocean07000814/articles/287249.html非洲白?/dc:creator>非洲白?/author>Sat, 18 Jul 2009 07:02:00 GMThttp://www.aygfsteel.com/ocean07000814/articles/287249.htmlhttp://www.aygfsteel.com/ocean07000814/comments/287249.htmlhttp://www.aygfsteel.com/ocean07000814/articles/287249.html#Feedback0http://www.aygfsteel.com/ocean07000814/comments/commentRss/287249.htmlhttp://www.aygfsteel.com/ocean07000814/services/trackbacks/287249.htmlExt.data.Store介绍 var store = new Ext.data.Store({      
     
    proxy:new Ext.data.ScriptTagProxy({url:'/xxx/xx.action'}),      
     
    reader:new Ext.data.JsonReader({      
     
        totalProperty:'results',      
     
        root:'template',      
     
        id:'id'     
     
    },Ext.data.Record.create([      
     
        {name:'templateid',mapping:'id',type:'int'},      
     
        {name:'templatename',mapping:'name'},      
     
        {name:'templateuser',mapping:'user'}      
     
    ]))      
     
});      
     
store.load({params:{start:0, limit:10}});

Ҏ: Store( Object config ) 构? config定义?..

{ autoLoad : Boolean/Object,    //自动载入  

baseParams : Object,    //只有使用httpproxy时才有意?nbsp; 

data : Array,        //数据

proxy : Ext.data.DataProxy,//数据代理

pruneModifiedRecords : boolean,//清除修改信息 reader : Ext.data.Reader,    //数据d?

remoteSort : boolean,    //q程排序?

sortInfo : Object,    //{field: "fieldName", direction: "ASC|DESC"}q样的排序对?

url : String,        //利用url构造HttpProxy

}



你可以得C个store 的长度:

store.data.items.length

你也可以得到store 中的某个值日?

Ҏ?store.data.item(i).name //name 是字D名U?br />






]]>
վ֩ģ壺 ɽʡ| ľ| | | ƺ| | | ˫| | ˫| Ž| | Ǽ| | | | | | Ϫ| | | | | | ͨ| ۲| | ͨ| | | Ͷ| | | ƽ| ͨ| | ԭ| ¹| ָ| ɽ| ԫ|