??xml version="1.0" encoding="utf-8" standalone="yes"?>色欲色欲天天天www亚洲伊,激情内射亚洲一区二区三区,亚洲AV无码成人专区片在线观看http://www.tkk7.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.tkk7.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.tkk7.com/ocean07000814/articles/429780.html</guid><wfw:comment>http://www.tkk7.com/ocean07000814/comments/429780.html</wfw:comment><comments>http://www.tkk7.com/ocean07000814/articles/429780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ocean07000814/comments/commentRss/429780.html</wfw:commentRss><trackback:ping>http://www.tkk7.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类#Ҏ(gu)、类#成员]</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类#Ҏ(gu)、类#成员]</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.tkk7.com/ocean07000814/aggbug/429780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ocean07000814/" target="_blank">非洲白?/a> 2016-03-23 15:05 <a href="http://www.tkk7.com/ocean07000814/articles/429780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr动态加载下拉框http://www.tkk7.com/ocean07000814/articles/352886.html非洲白?/dc:creator>非洲白?/author>Thu, 23 Jun 2011 09:36:00 GMThttp://www.tkk7.com/ocean07000814/articles/352886.htmlhttp://www.tkk7.com/ocean07000814/comments/352886.htmlhttp://www.tkk7.com/ocean07000814/articles/352886.html#Feedback0http://www.tkk7.com/ocean07000814/comments/commentRss/352886.htmlhttp://www.tkk7.com/ocean07000814/services/trackbacks/352886.htmljava文g中增加下列:(x)
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.tkk7.com/ocean07000814/articles/311810.html非洲白?/dc:creator>非洲白?/author>Wed, 03 Feb 2010 07:21:00 GMThttp://www.tkk7.com/ocean07000814/articles/311810.htmlhttp://www.tkk7.com/ocean07000814/comments/311810.htmlhttp://www.tkk7.com/ocean07000814/articles/311810.html#Feedback0http://www.tkk7.com/ocean07000814/comments/commentRss/311810.htmlhttp://www.tkk7.com/ocean07000814/services/trackbacks/311810.html  

DWR采取?jin)一个类似AJAX的新Ҏ(gu)来动态生成基于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)

  首先看下工程里面:

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

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

  在来看下dwr.xml的配|:(x)

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

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

  在看重要的部分dwr的节点:(x)

           <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>

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

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

在来看看JavaScript调用javacȝҎ(gu)

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

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

 

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

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

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

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

 来看下效果,

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

 

好了(jin)Q具体配|就是这L(fng)?/p>

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

]]>
jQuery中对html对象的操?/title><link>http://www.tkk7.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.tkk7.com/ocean07000814/articles/289926.html</guid><wfw:comment>http://www.tkk7.com/ocean07000814/comments/289926.html</wfw:comment><comments>http://www.tkk7.com/ocean07000814/articles/289926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ocean07000814/comments/commentRss/289926.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ocean07000814/services/trackbacks/289926.html</trackback:ping><description><![CDATA[jQueryQjavascriptQ中对html对象的操作:(x)<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设|ؓ(f)不能~辑?br /> $('#proId').removeAttr("disabled")Q设|ؓ(f)可编辑?br /> <br /> <br /> jQuery?('#proId') {同?javascript中document.getElementById("proId");<br /> <br /> <img src ="http://www.tkk7.com/ocean07000814/aggbug/289926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ocean07000814/" target="_blank">非洲白?/a> 2009-08-05 12:36 <a href="http://www.tkk7.com/ocean07000814/articles/289926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery介绍Q自我学?fn)?j)http://www.tkk7.com/ocean07000814/articles/289819.html非洲白?/dc:creator>非洲白?/author>Tue, 04 Aug 2009 09:48:00 GMThttp://www.tkk7.com/ocean07000814/articles/289819.htmlhttp://www.tkk7.com/ocean07000814/comments/289819.htmlhttp://www.tkk7.com/ocean07000814/articles/289819.html#Feedback2http://www.tkk7.com/ocean07000814/comments/commentRss/289819.htmlhttp://www.tkk7.com/ocean07000814/services/trackbacks/289819.html jQueryq国hJohn Resig创徏Q至今已吸引?jin)来自世界各地的众多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库所不及(qing)的,它兼容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ؓ(f)|站提供AJAX交互?br /> jQueryq有一个比较大的优势是Q它的文档说明很全,而且各种应用也说得很详细Q同时还有许多成熟的插g可供选择?br /> jQuery能够使用L(fng)html保持代码和html内容分离Q也是_(d)不用再在html里面插入一堆js来调用命令了(jin)Q只需定义id卛_?br /> Jquery是prototype之后又一个优U的Javascrīpt框架。对 prototype我用不多,单了(jin)解过。但使用上jquery之后Q马上被她的优雅吸引住了(jin)。有Z用这L(fng)一比喻来比较prototype? jqueryQprototype像JavaQ而jquery像ruby.实际上我比较喜欢javaQ少接触Ruby |了(jin)Q但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作ؓ(f)自己唯一的框架类包。用其间也有一点点?j)得Q其实这些心(j)得, 在jquery的文档上面也可能有讲Q不q还是记下来Q以备忘|?

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

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

三,代替body标签的onload

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

四,事g机制

我大量用的事g可能是button的onclick?jin)。以前习(fn)惯在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调用了(jin)同样的函数。但l果却差别很大?
W一行是q回指定元素的HTML|W二行则是将helloq串字符讄到指定元素中。jquery的函数大部分有这L(fng)Ҏ(gu)?

六,ajax

q是一个ajax横行的时代。多hQ了(jin)不了(jin)解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些都是较常用的Ҏ(gu)Qget和post用法一栗第一个参数是异步h的urlQ第二个为参敎ͼW三个回调方法?
3Q?的方法会(x)在指定的Dom对象上绑定响应ajax执行的事件。当?dng)jquery的AJAX相关的函C仅是q些Q有兴趣可以ȝI再多?

七,渐入淡出

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

八,plugin

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

]]>
Ext.data.Store的基本用?/title><link>http://www.tkk7.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.tkk7.com/ocean07000814/articles/287262.html</guid><wfw:comment>http://www.tkk7.com/ocean07000814/comments/287262.html</wfw:comment><comments>http://www.tkk7.com/ocean07000814/articles/287262.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/ocean07000814/comments/commentRss/287262.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ocean07000814/services/trackbacks/287262.html</trackback:ping><description><![CDATA[<pre>Ext.data.Store是EXT中用来进行数据交换和数据交互的标准中间gQ无论是Gridq是ComboBoxQ都是通过它实现数据读取、类型{换、排序分和搜烦(ch){操作的?br /> <br /> Ext.data.Store中有一个Ext.data.Record数组Q所有数据都存放在这些Ext.data. Record实例中,为后面的d和修Ҏ(gu)作做准备?br /> <br /> <strong style="color: blue;">Ext.data.Store的基本用?/strong><br /> <br /> 在用之前,首先要创Z个Ext.data.Store的实例,如下面的代码所C?br /> <br /> <div id="drpjtdc" class="dp-highlighter"> <ol class="dp-c"> <li id="zcbzuaz" class="alt"><span><span id="oracisv" class="keyword">var</span><span> data = [   </span></span></li> <li><span>    [</span><span id="rbzfsmw" class="string">'boy'</span><span>, 0],   </span></li> <li id="btcacba" class="alt"><span>    [</span><span id="yfdxknm" class="string">'girl'</span><span>, 1]   </span></li> <li><span>];   </span></li> <li id="ppgivup" class="alt"><span>  </span></li> <li><span id="ewjlkub" class="keyword">var</span><span> store = </span><span id="itgmdnx" class="keyword">new</span><span> Ext.data.Store({   </span></li> <li id="bmzfwrf" class="alt"><span>    proxy: </span><span id="pobhjpk" class="keyword">new</span><span> Ext.data.MemoryProxy(data),   </span></li> <li><span>    reader: </span><span id="lomofaz" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord)   </span></li> <li id="taglnxd" class="alt"><span>});   </span></li> <li><span>  </span></li> <li id="drivihg" class="alt"><span>store.load();  </span></li> </ol> </div> <div id="juofhrf" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="dzbzxwg" class="alt"><span><span id="qmobdgb" class="keyword">var</span><span> data = [  </span></span></li> <li id="ldfhyxa" class=""><span>    [<span id="hqypcfe" class="string">'boy'</span><span>, 0],  </span></span></li> <li id="bmzjsrf" class="alt"><span>    [<span id="fusjpgu" class="string">'girl'</span><span>, 1]  </span></span></li> <li id="gvpvxwg" class=""><span>];  </span></li> <li id="xioulvf" class="alt"><span>  </span></li> <li id="xtgxonm" class=""><span><span id="nfhylgf" class="keyword">var</span><span> store = </span><span id="qizfpon" class="keyword">new</span><span> Ext.data.Store({  </span></span></li> <li id="ttgmsrf" class="alt"><span>    proxy: <span id="fqlvpon" class="keyword">new</span><span> Ext.data.MemoryProxy(data),  </span></span></li> <li id="utgevfa" class=""><span>    reader: <span id="szivihr" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord)  </span></span></li> <li id="siuerbp" class="alt"><span>});  </span></li> <li id="xpulcqt" class=""><span>  </span></li> <li id="gnpceoy" 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使用?jin),q就是Ext.data. Store的最基本用法?br /> <br /> <br /> <strong style="color: blue;">Ext.data.StoreҎ(gu)据进行排?/strong><br /> <br /> <br /> Ext.data.Store提供?jin)一pd属性和函数Q利用它们对数据q行排序操作?br /> <br /> 可以在创建Ext.data.Store时用sortInfo参数指定排序的字D和排序方式Q如下面的代码所C?br /> <br /> <div id="qioborx" class="dp-highlighter"> <ol class="dp-c"> <li id="vrpzidn" class="alt"><span><span id="doqoqpz" class="keyword">var</span><span> store = </span><span id="alnpcml" class="keyword">new</span><span> Ext.data.Store({   </span></span></li> <li><span>    proxy: </span><span id="iluhnbl" class="keyword">new</span><span> Ext.data.MemoryProxy(data),   </span></li> <li id="njhuari" class="alt"><span>    reader: </span><span id="zntzbps" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord),   </span></li> <li><span>    sortInfo: {field: </span><span id="julgtdn" class="string">'name'</span><span>, direction: </span><span id="fmvbwgf" class="string">'DESC'</span><span>}   </span></li> <li id="jbdjwvq" class="alt"><span>});  </span></li> </ol> </div> <div id="fqduhnq" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="lofagfp" class="alt"><span><span id="vvxvjtd" class="keyword">var</span><span> store = </span><span id="yfhfpvq" class="keyword">new</span><span> Ext.data.Store({  </span></span></li> <li id="tpnlrxp" class=""><span>    proxy: <span id="puarmwz" class="keyword">new</span><span> Ext.data.MemoryProxy(data),  </span></span></li> <li id="dgagxhn" class="alt"><span>    reader: <span id="phuwcbp" class="keyword">new</span><span> Ext.data.ArrayReader({}, PersonRecord),  </span></span></li> <li id="yfdjtzc" class=""><span>    sortInfo: {field: <span id="vouoflr" class="string">'name'</span><span>, direction: </span><span id="meneyid" class="string">'DESC'</span><span>}  </span></span></li> <li id="yjwntdg" 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就?x)自动根据name字段q行降序排列。对store使用store.setDefaultSort('name','DESC');也会(x)辑ֈ同样效果?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 /> 当设|ؓ(f)remoteSort:trueӞstore?x)在向后台请求数据时自动加入sort和dir两个参数Q?br /> <br /> 分别对应排序的字D和排序的方式,由后台获取ƈ处理q两个参敎ͼ在后台对所需数据q行排序操作?br /> <br /> remoteSort:true也会(x)D每次执行sort()旉要去后台重新加蝲数据Q而不能只Ҏ(gu)地数据进行排序?br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store从store中获取数?/strong><br /> <br /> 从store中获取数据有很多U途径Q可以依据不同的要求选择不同的函数?br /> <br /> 最直接的方法是Ҏ(gu)record在store中的行号获得对应的recordQ得C(jin)record可以用get()函数获得里面的数据了(jin)Q如下面的代码所C?br /> <br /> <div id="drivbpd" class="dp-highlighter"> <ol class="dp-c"> <li id="kkqhjad" class="alt"><span><span>store.getAt(0).get(</span><span id="cjaulkq" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <div id="rnpvisr" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="btridcx" class="alt"><span><span>store.getAt(0).get(</span><span id="tlvmhvj" 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="hofdyis" class="dp-highlighter"> <ol class="dp-c"> <li id="ewntkjx" class="alt"><span><span id="zzqdjeo" class="keyword">for</span><span> (</span><span id="phuarbd" class="keyword">var</span><span> i = 0; i < store.getCount(); i++) {   </span></span></li> <li><span>    </span><span id="adbzxzn" class="keyword">var</span><span> record = store.getAt(i);   </span></li> <li id="krentdj" class="alt"><span>    alert(record.get(</span><span id="ggtvekn" class="string">'name'</span><span>));   </span></li> <li><span>}  </span></li> </ol> </div> <div id="gcegqao" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="sywcezj" class="alt"><span><span id="xlylupo" class="keyword">for</span><span> (</span><span id="fmzmzya" class="keyword">var</span><span> i = 0; i < store.getCount(); i++) {  </span></span></li> <li id="bmzuhcx" class=""><span>    <span id="doflntw" class="keyword">var</span><span> record = store.getAt(i);  </span></span></li> <li id="wdqdyih" class="alt"><span>    alert(record.get(<span id="ttzbdrx" class="string">'name'</span><span>));  </span></span></li> <li id="lsfhfpz" 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 /> 除了(jin)使用getCount()的方法外Q还可以使用each()函数Q如下面的代码所C?br /> <br /> <div id="etoulnm" class="dp-highlighter"> <ol class="dp-c"> <li id="biobdnm" class="alt"><span><span>store.each(</span><span id="bxzform" class="keyword">function</span><span>(record) {   </span></span></li> <li><span>    alert(record.get(</span><span id="fidbhgu" class="string">'name'</span><span>));   </span></li> <li id="vvbojek" class="alt"><span>});  </span></li> </ol> </div> <div id="txvxdja" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="yqhuhcm" class="alt"><span><span>store.each(</span><span id="xtzqdjn" class="keyword">function</span><span>(record) {  </span></span></li> <li id="yfwnavf" class=""><span>    alert(record.get(<span id="tpylneo" class="string">'name'</span><span>));  </span></span></li> <li id="sztvqlk" 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作ؓ(f)参数传递给function()处理?br /> <br /> 如果希望停止遍历Q可以让function()q回false?br /> <br /> 也可以用getRange()函数q箋获得多个recordQ只需要指定开始和l束位置的烦(ch)引|如下面的代码所C?br /> <br /> <div id="xekbdgf" class="dp-highlighter"> <ol class="dp-c"> <li id="tsnirue" class="alt"><span><span id="vjpyezf" class="keyword">var</span><span> records = store.getRange(0, 1);   </span></span></li> <li><span>  </span></li> <li id="rclnihv" class="alt"><span id="zgpctgf" class="keyword">for</span><span> (</span><span id="ubkqhjq" class="keyword">var</span><span> i = 0; i < records.length; i++) {   </span></li> <li><span>    </span><span id="szbofxl" class="keyword">var</span><span> record = records[i];   </span></li> <li id="rcpceoy" class="alt"><span>    alert(record.get(</span><span id="swjhjpd" class="string">'name'</span><span>));   </span></li> <li><span>}  </span></li> </ol> </div> <div id="phjpnts" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="uqsfsrf" class="alt"><span><span id="ogarxlz" class="keyword">var</span><span> records = store.getRange(0, 1);  </span></span></li> <li id="ymdfwvq" class=""><span>  </span></li> <li id="njhjpdy" class="alt"><span><span id="mmzxdcb" class="keyword">for</span><span> (</span><span id="xtzrhvq" class="keyword">var</span><span> i = 0; i < records.length; i++) {  </span></span></li> <li id="ldqwcxh" class=""><span>    <span id="njpridc" class="keyword">var</span><span> record = records[i];  </span></span></li> <li id="okqwjeo" class="alt"><span>    alert(record.get(<span id="yuduavu" class="string">'name'</span><span>));  </span></span></li> <li id="vctvivq" 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也可以Ҏ(gu)record本n的id从store中获得对应的recordQ如下面的代码所C?br /> <br /> <br /> <div id="joxzuth" class="dp-highlighter"> <ol class="dp-c"> <li id="paypnml" class="alt"><span><span>store.getById(1001).get(</span><span id="lhnlrup" class="string">'name'</span><span>)  </span></span></li> </ol> </div> <div id="dvulnil" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="njpgmhv" class="alt"><span><span>store.getById(1001).get(</span><span id="bqdqhcb" 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提供了(jin)函数find()和findBy()Q可以利用它们对store中的数据q行搜烦(ch)Q如下面的代码所C?br /> <br /> <div id="juhjprb" class="dp-highlighter"> <ol class="dp-c"> <li id="vgizftd" class="alt"><span><span>find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch],[Boolean caseSensitive] )   </span></span></li> </ol> </div> <div id="cuwnasr" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="rytrxsc" 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代表搜烦(ch)的字D名Q?br /> <br /> W二个参数value是匹配用字符串或正则表达式;<br /> <br /> W三个参数startIndex表示从第几行开始搜?<br /> <br /> W四个参数anyMatch为trueӞ不必从头开始匹配;<br /> <br /> W五个参数caseSensitive为trueӞ?x)区分大写?br /> <br /> 如下面的代码所C:(x)<br /> <br /> <div id="gcentdj" class="dp-highlighter"> <ol class="dp-c"> <li id="gririhr" class="alt"><span><span id="fhtkblk" class="keyword">var</span><span> index = store.find(</span><span id="rctkxhc" class="string">'name'</span><span>,</span><span id="jbofoui" class="string">'g'</span><span>);   </span></span></li> <li><span>  </span></li> <li id="grikqak" class="alt"><span>alert(store.getAt(index).get(</span><span id="vctnezq" class="string">'name'</span><span>));  </span></li> </ol> </div> <div id="tlnpvfp" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="mxrtvfp" class="alt"><span><span id="xtcprut" class="keyword">var</span><span> index = store.find(</span><span id="qmkiofp" class="string">'name'</span><span>,</span><span id="pljhjeo" class="string">'g'</span><span>);  </span></span></li> <li id="marprih" class=""><span>  </span></li> <li id="cyhnwru" class="alt"><span>alert(store.getAt(index).get(<span id="terxdrf" 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()函数的定义格式如下:(x)<br /> <br /> <div id="ttzxojt" class="dp-highlighter"> <ol class="dp-c"> <li id="zzbhjpo" class="alt"><span><span>findBy( Function fn, [Object scope], [Number startIndex] ) : Number  </span></span></li> </ol> </div> <div id="lluprxh" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="gboqsnb" 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行搜烦(ch)?br /> <br /> fnq回trueӞ表示查找成功Q于是停止遍历ƈq回行号?br /> <br /> fnq回falseӞ表示查找p|Q即未找刎ͼ(j)Ql遍历,如下面的代码所C?br /> <br /> <br /> <div id="yfobwgb" class="dp-highlighter"> <ol class="dp-c"> <li id="awnacba" class="alt"><span><span>index = store.findBy(</span><span id="hzxzgdr" class="keyword">function</span><span>(record, id) {   </span></span></li> <li><span>    </span><span id="gvxkxlk" class="keyword">return</span><span> record.get(</span><span id="fxdmonm" class="string">'name'</span><span>) == </span><span id="wsulnes" class="string">'girl'</span><span> && record.get(</span><span id="lsjpvut" class="string">'sex'</span><span>) == 1;   </span></li> <li id="iejhnmw" class="alt"><span>});   </span></li> <li><span>  </span></li> <li id="hhjwneo" class="alt"><span>alert(store.getAt(index).get(</span><span id="tpvtdjx" class="string">'name'</span><span>));  </span></li> </ol> </div> <div id="nuanwkf" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="qbzqwzy" class="alt"><span><span>index = store.findBy(</span><span id="qmomoyx" class="keyword">function</span><span>(record, id) {  </span></span></li> <li id="mbdnpvj" class=""><span>    <span id="grikqpz" class="keyword">return</span><span> record.get(</span><span id="gnirqak" class="string">'name'</span><span>) == </span><span id="nusjpgf" class="string">'girl'</span><span> && record.get(</span><span id="kravxhv" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="xjsfhym" class="alt"><span>});  </span></li> <li id="ldlypvq" class=""><span>  </span></li> <li id="dntzxsg" class="alt"><span>alert(store.getAt(index).get(<span id="phuhrfe" 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里面包含了(jin)搜烦(ch)得到的数据,如下面的代码所C?br /> <br /> <div id="zvtojxh" class="dp-highlighter"> <ol class="dp-c"> <li id="rjlnisn" class="alt"><span><span>alert(store.query(</span><span id="oikbdgb" class="string">'name'</span><span>, </span><span id="cjmoxzt" class="string">'boy'</span><span>));   </span></span></li> <li><span>  </span></li> <li id="yfsnpzj" class="alt"><span>alert(store.queryBy(</span><span id="sktrpkf" class="keyword">function</span><span>(record) {   </span></li> <li><span>    </span><span id="mmkbwgq" class="keyword">return</span><span> record.get(</span><span id="dzqsqlv" class="string">'name'</span><span>) == </span><span id="hdfhjts" class="string">'girl'</span><span> && record.get(</span><span id="jqhypku" class="string">'sex'</span><span>) == 1;   </span></li> <li id="wdbdbhr" class="alt"><span>}));  </span></li> </ol> </div> <div id="jflgikj" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="vgtgxwv" class="alt"><span><span>alert(store.query(</span><span id="xbsqwrq" class="string">'name'</span><span>, </span><span id="hhjlrbl" class="string">'boy'</span><span>));  </span></span></li> <li id="bxgflvf" class=""><span>  </span></li> <li id="begtgfp" class="alt"><span>alert(store.queryBy(<span id="knlypkf" class="keyword">function</span><span>(record) {  </span></span></li> <li id="tlrxojt" class=""><span>    <span id="lomzjtz" class="keyword">return</span><span> record.get(</span><span id="kcpcidc" class="string">'name'</span><span>) == </span><span id="qmzxvmh" class="string">'girl'</span><span> && record.get(</span><span id="pzxvxdr" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="pofhutd" 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="xtgtzyi" class="dp-highlighter"> <ol class="dp-c"> <li id="asqhyeo" class="alt"><span><span>store.add(</span><span id="dkxgisc" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="orartzj" class="string">'other'</span><span>,   </span></li> <li id="qxvlnmw" class="alt"><span>    sex: 0   </span></li> <li><span>}));  </span></li> </ol> </div> <div id="pexdjez" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="kprtknb" class="alt"><span><span>store.add(</span><span id="kctcpdy" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="twnlnxw" class=""><span>    name: <span id="dgxzfpz" class="string">'other'</span><span>,  </span></span></li> <li id="zyactsg" class="alt"><span>    sex: 0  </span></li> <li id="loxzqav" 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:(x)<br /> <br /> <div id="tzbrezj" class="dp-highlighter"> <ol class="dp-c"> <li id="qtqhyiw" class="alt"><span><span>store.add([</span><span id="qmkegqa" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="gfwctvy" class="string">'other1'</span><span>,   </span></li> <li id="bxsjlrb" class="alt"><span>    sex: 0   </span></li> <li><span>}), </span><span id="zvtkqps" class="keyword">new</span><span> PersonRecord({   </span></li> <li id="ymhyazj" class="alt"><span>    name: </span><span id="nudfwrb" class="string">'other2'</span><span>,   </span></li> <li><span>    sex: 0   </span></li> <li id="mpcizjt" class="alt"><span>})]);  </span></li> </ol> </div> <div id="svxkqlk" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="yflyedy" class="alt"><span><span>store.add([</span><span id="mbdulgf" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="tauljxl" class=""><span>    name: <span id="dzbsjez" class="string">'other1'</span><span>,  </span></span></li> <li id="jtkqsue" class="alt"><span>    sex: 0  </span></li> <li id="donprxh" class=""><span>}), <span id="wdfizji" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="cfdbzqa" class="alt"><span>    name: <span id="ddxglgb" class="string">'other2'</span><span>,  </span></span></li> <li id="gcerihk" class=""><span>    sex: 0  </span></li> <li id="ssjlnpz" 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()函数每次都会(x)新数据d到store的末,q就有可能破坏store原有的排序方式。如果希望根据store原来的排序方式将新数据插入到对应的位|,可以使用addSorted()函数。它?x)在d新数据之后立卛_storeq行排序Q这样就可以保证store中的数据有序地显C,如下面的代码所C?br /> <br /> <div id="ipjsyek" class="dp-highlighter"> <ol class="dp-c"> <li id="llnwftz" class="alt"><span><span>store.addSorted(</span><span id="ppvevqa" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="yfoivfa" class="string">'lili'</span><span>,   </span></li> <li id="fxvbdnt" class="alt"><span>    sex: 1   </span></li> <li><span>}));  </span></li> </ol> </div> <div id="eoqzjml" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="xtnpvqa" class="alt"><span><span>store.addSorted(</span><span id="dvbsfpz" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="ooqlned" class=""><span>    name: <span id="roqhyaz" class="string">'lili'</span><span>,  </span></span></li> <li id="gjarmsc" class="alt"><span>    sex: 1  </span></li> <li id="hzxkmdu" 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?x)根据排序信息查找这条record应该插入的烦(ch)引位|,然后Ҏ(gu)得到的烦(ch)引位|插入数据,从而实现对整体q行排序。这个函数需要预先ؓ(f)store讄本地排序Q否则会(x)不v作用?br /> <br /> 如果希望自己指定数据插入的烦(ch)引位|,可以使用insert()函数。它的第一个参数表C插入数据的索引位置Q可以用record实例或record实例的数l作为参敎ͼ插入之后Q后面的数据自动后移Q如下面的代码所C?br /> <br /> <div id="yfdfhvb" class="dp-highlighter"> <ol class="dp-c"> <li id="ffhnthy" class="alt"><span><span>store.insert(3, </span><span id="zkxzblr" class="keyword">new</span><span> PersonRecord({   </span></span></li> <li><span>    name: </span><span id="oofwcqo" class="string">'other'</span><span>,   </span></li> <li id="vriduid" class="alt"><span>    sex: 0   </span></li> <li><span>}));   </span></li> <li id="ievxsnm" class="alt"><span>  </span></li> <li><span>store.insert(3, [</span><span id="hzfhflk" class="keyword">new</span><span> PersonRecord({   </span></li> <li id="dnvmzjp" class="alt"><span>    name: </span><span id="dvivmlv" class="string">'other1'</span><span>,   </span></li> <li><span>    sex: 0   </span></li> <li id="rcpjwrb" class="alt"><span>}), </span><span id="hhupvfe" class="keyword">new</span><span> PersonRecord({   </span></li> <li><span>    name: </span><span id="lhcarba" class="string">'other2'</span><span>,   </span></li> <li id="nboulvb" class="alt"><span>    sex: 0   </span></li> <li><span>})]);  </span></li> </ol> </div> <div id="itgtred" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="dkmdjto" class="alt"><span><span>store.insert(3, </span><span id="rrxzjtd" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="pacikjp" class=""><span>    name: <span id="aajhnml" class="string">'other'</span><span>,  </span></span></li> <li id="vvtriwv" class="alt"><span>    sex: 0  </span></li> <li id="rcwyarm" class=""><span>}));  </span></li> <li id="bmkmsjx" class="alt"><span>  </span></li> <li id="ppctvql" class=""><span>store.insert(3, [<span id="sdfhqwv" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="xevlrbl" class="alt"><span>    name: <span id="bqhcedn" class="string">'other1'</span><span>,  </span></span></li> <li id="epjlnxs" class=""><span>    sex: 0  </span></li> <li id="whbouih" class="alt"><span>}), <span id="bfwfscm" class="keyword">new</span><span> PersonRecord({  </span></span></li> <li id="okxoqaz" class=""><span>    name: <span id="ozbobhn" class="string">'other2'</span><span>,  </span></span></li> <li id="ujsfsci" class="alt"><span>    sex: 0  </span></li> <li id="nuzqhnm" 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="qtgbsnx" class="dp-highlighter"> <ol class="dp-c"> <li id="ggprbra" class="alt"><span><span>store.remove(store.getAt(0));   </span></span></li> <li><span>store.removeAll();  </span></li> </ol> </div> <div id="jqwfntd" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wdfsfav" class="alt"><span><span>store.remove(store.getAt(0));  </span></span></li> <li id="buwnedn" 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中没有专门提供修Ҏ(gu)一行record的操作,我们需要先从store中获取一个record。对q个record内部数据的修改会(x)直接反映到store上,如下面的代码所C?br /> <br /> <div id="plcxrbp" class="dp-highlighter"> <ol class="dp-c"> <li id="fflyedg" class="alt"><span><span>store.getAt(0).set(</span><span id="pwuwjiz" class="string">'name'</span><span>, </span><span id="hvxdutd" class="string">'xxxx'</span><span>);  </span></span></li> </ol> </div> <div id="kdmdfxh" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="ksjljts" class="alt"><span><span>store.getAt(0).set(</span><span id="rgxdfeo" class="string">'name'</span><span>, </span><span id="dlfwnto" 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 /> 与修Ҏ(gu)据相关的参数是pruneModifiedRecordsQ如果将它设|ؓ(f)trueQ当每次执行删除或reload操作Ӟ都会(x)清空所有修攏V这P在每ơ执行删除或reload操作之后QgetModifiedRecords()q回的就是一个空数组Q否则仍然会(x)得到上次修改q的record记录<br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store加蝲?qing)显C数?/strong><br /> <br /> store创徏好后Q需要调用load()函数加蝲数据Q加载成功后才能对store中的数据q行操作。load()调用的完整过E如下面的代码所C?br /> <br /> <div id="kofwctd" class="dp-highlighter"> <ol class="dp-c"> <li id="qjwjdnx" class="alt"><span><span>store.load({   </span></span></li> <li><span>    params: {start:0,limit:20},   </span></li> <li id="mctgtdy" class="alt"><span>    callback: </span><span id="lfdjpdj" class="keyword">function</span><span>(records, options, success){   </span></li> <li><span>        Ext.Msg.alert(</span><span id="tzqhnxl" class="string">'info'</span><span>, </span><span id="imdfwgu" class="string">'加蝲完毕'</span><span>);   </span></li> <li id="brpnlkf" class="alt"><span>    },   </span></li> <li><span>    scope: store,   </span></li> <li id="lboudje" class="alt"><span>    add: </span><span id="tqdqdfx" class="keyword">true</span><span>  </span></li> <li><span>});  </span></li> </ol> </div> <div id="glrevum" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="bcpgtsy" class="alt"><span><span>store.load({  </span></span></li> <li id="eqsjhnx" class=""><span>    params: {start:0,limit:20},  </span></li> <li id="zpgmdyb" class="alt"><span>    callback: <span id="derpcqp" class="keyword">function</span><span>(records, options, success){  </span></span></li> <li id="sxdxoyi" class=""><span>        Ext.Msg.alert(<span id="uzbdypk" class="string">'info'</span><span>, </span><span id="jomoqdy" class="string">'加蝲完毕'</span><span>);  </span></span></li> <li id="dartvfe" class="alt"><span>    },  </span></li> <li id="ptkmsnx" class=""><span>    scope: store,  </span></li> <li id="qcigxhn" class="alt"><span>    add: <span id="tjdfazn" class="keyword">true</span><span>  </span></span></li> <li id="gpjayxl" 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是加载完毕时执行的回调函敎ͼ它包?个参敎ͼ(x)records参数表示获得的数据,options表示执行load()时传递的参数Qsuccess表示是否加蝲成功?br /> <br /> 3. Scope用来指定回调函数执行时的作用域?br /> <br /> 4. Add为trueӞload()得到的数据会(x)d在原来的store数据的末,否则?x)先清除之前的数据,再将得到的数据添加到store中?br /> <br /> 一般来_(d)Z(jin)对store中的数据q行初始化,load()函数只需要执行一ơ。如果用params参数指定?jin)需要用的参数Q以后再ơ执行reload()重新加蝲数据Ӟstore?x)自动用上ơload()中包含的params参数内容?br /> <br /> 如果有一些需要固定传递的参数Q也可以使用baseParams参数执行Q它是一个JSON对象Q里面的数据?x)作为参数发送给后台处理Q如下面的代码所C?br /> <br /> <div id="qvevton" class="dp-highlighter"> <ol class="dp-c"> <li id="hmvtvbw" class="alt"><span><span>store.baseParams.start = 0;   </span></span></li> <li><span>store.baseParams.limit = 20;  </span></li> </ol> </div> <div id="hioqsje" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="xcwnezy" class="alt"><span><span>store.baseParams.start = 0;  </span></span></li> <li id="fkxofed" 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行qo(h)Q只昄W合条g的部分,如下面的代码所C?br /> <br /> <div id="xrtvbwn" class="dp-highlighter"> <ol class="dp-c"> <li id="qgmvxhr" class="alt"><span><span>filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : </span><span id="fkbdupz" class="keyword">void</span><span>  </span></span></li> </ol> </div> <div id="oxkmdja" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="ndqhnxw" class="alt"><span><span>filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : </span><span id="absuhyb" 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="pfouhrq" class="dp-highlighter"> <ol class="dp-c"> <li id="aqwyprf" class="alt"><span><span>store.filter(</span><span id="vlywrbl" class="string">'name'</span><span>, </span><span id="rlrsueg" class="string">'boy'</span><span>);  </span></span></li> </ol> </div> <div id="rwnpjto" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="mgmoqdn" class="alt"><span><span>store.filter(</span><span id="gwjarqp" class="string">'name'</span><span>, </span><span id="jzrobwc" 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="hisjazu" class="dp-highlighter"> <ol class="dp-c"> <li id="ajwntzy" class="alt"><span><span>store.filterBy(</span><span id="tnavfpz" class="keyword">function</span><span>(record) {   </span></span></li> <li><span>    </span><span id="xrizbwg" class="keyword">return</span><span> record.get(</span><span id="aqsflvf" class="string">'name'</span><span>) == </span><span id="bgarpkb" class="string">'girl'</span><span> && record.get(</span><span id="lqsbscm" class="string">'sex'</span><span>) == 1;   </span></li> <li id="zpredne" class="alt"><span>});  </span></li> </ol> </div> <div id="dmcxoyi" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="vpnpkjt" class="alt"><span><span>store.filterBy(</span><span id="jzmzfid" class="keyword">function</span><span>(record) {  </span></span></li> <li id="wmsyagu" class=""><span>    <span id="ysbzbez" class="keyword">return</span><span> record.get(</span><span id="zevbzyb" class="string">'name'</span><span>) == </span><span id="uzxdfed" class="string">'girl'</span><span> && record.get(</span><span id="bcevxor" class="string">'sex'</span><span>) == 1;  </span></span></li> <li id="mvxhqav" 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="qktrpzy" class="dp-highlighter"> <ol class="dp-c"> <li id="oagivfi" class="alt"><span><span>store.clearFilter();  </span></span></li> </ol> </div> <div id="glyecml" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="jzmoblv" 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上是否设|了(jin)qo(h)器,可以通过isFiltered()函数q行判断?br /> <br /> <br /> <strong style="color: blue;">Ext.data.Store其他功能</strong><br /> <br /> 除了(jin)上面提到的数据获取、排序、更新、显C等功能外,storeq提供了(jin)其他一些功能函数?br /> <br /> <div id="pblyeoy" class="dp-highlighter"> <ol class="dp-c"> <li id="rzqwued" class="alt"><span><span>collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array  </span></span></li> </ol> </div> <div id="xyhnpkj" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="gprtdue" 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回的结果中可能?x)包含null、undefined或空字符Ԍ否则collect函数?x)自动将q些I数据过滤掉。当bypassFilter参数为trueӞcollect的结果不?x)受查询条g的媄(jing)响,无论查询条g是什么都?x)忽略掉Q返回的信息是所有的数据Q如下面的代码所C?br /> <br /> <div id="qzmzqpz" class="dp-highlighter"> <ol class="dp-c"> <li id="oenpgql" class="alt"><span><span>alert(store.collect(</span><span id="otntvqp" class="string">'name'</span><span>));  </span></span></li> </ol> </div> <div id="uzmvtkf" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="wmdyeou" class="alt"><span><span>alert(store.collect(</span><span id="brpvxor" 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样?x)获得所有name列的|CZ中返回的是包含了(jin)'boy'?girl'的数l?br /> <br /> getTotalCount()用于在翻|获得后台传递过来的数据L。如果没有设|翻,get- TotalCount()的结果与getCount()相同Q都是返回当前的数据LQ如下面的代码所C?br /> <br /> <div id="eflntsy" class="dp-highlighter"> <ol class="dp-c"> <li id="frertdj" class="alt"><span><span>alert(store.getTotalCount());  </span></span></li> </ol> </div> <div id="xrevblk" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="dpnpvfe" 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)函数Ҏ(gu)record或record的id获得record对应的行P如下面的代码所C?br /> <br /> <div id="rlnanbe" class="dp-highlighter"> <ol class="dp-c"> <li id="ejlctsv" 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="lbhypvb" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="ajsjtzn" class="alt"><span><span>alert(store.indexOf(store.getAt(1)));  </span></span></li> <li id="jomzbhv" 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="glnlnto" class="dp-highlighter"> <ol class="dp-c"> <li id="clnafpz" class="alt"><span><span>store.loadData(data, </span><span id="pfhuazy" class="keyword">true</span><span>);  </span></span></li> </ol> </div> <div id="aqzmsrb" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="inpnwgb" class="alt"><span><span>store.loadData(data, </span><span id="afhypzj" 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="xypchku" class="dp-highlighter"> <ol class="dp-c"> <li id="aulyezu" class="alt"><span><span>alert(store.sum(</span><span id="higmdcx" class="string">'sex'</span><span>));  </span></span></li> </ol> </div> <div id="hmduazy" class="dp-highlighter"> <ol class="dp-c" start="1"> <li id="ktouhgx" class="alt"><span><span>alert(store.sum(</span><span id="xusfdnx" 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提供了(jin)一pd事gQ见下表Q,让我们可以ؓ(f)对应操作讑֮操作函数?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.tkk7.com/ocean07000814/aggbug/287262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ocean07000814/" target="_blank">非洲白?/a> 2009-07-18 17:53 <a href="http://www.tkk7.com/ocean07000814/articles/287262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext.data.Store介绍http://www.tkk7.com/ocean07000814/articles/287249.html非洲白?/dc:creator>非洲白?/author>Sat, 18 Jul 2009 07:02:00 GMThttp://www.tkk7.com/ocean07000814/articles/287249.htmlhttp://www.tkk7.com/ocean07000814/comments/287249.htmlhttp://www.tkk7.com/ocean07000814/articles/287249.html#Feedback0http://www.tkk7.com/ocean07000814/comments/commentRss/287249.htmlhttp://www.tkk7.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}});

Ҏ(gu): 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 的长度:(x)

store.data.items.length

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

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






]]>
վ֩ģ壺 ѵƵ| 2017һ| Ļһ| ձ˳ɻҳ߹ۿƵ| 67194츾ѹۿ| 99ƷһƵ| 99ƷѹۿƵ| 8090߹ۿѹۿ| 18ëƬѲ| һƵ| ĻƵww | wwwxxx| 77777ҹ| ޹avŪŵ˸| ձ޸߹ۿ| ޾Ʒ| һvѲһ| Ʒ97˳Ƶ| aձѿ| þѵľƷV| 4455߹ѿ| ߹ۿ˳Ƶɫ| ɬɬƵ| ޾Ʒ͵Ƶѹۿ | þþþþƵ| ҹƵ| ߹ۿĻɫַ| ˾þô߽ۺͼƬ| AVרӰ߹ۿ| ޾Ʒ| ޾Ʒavˮ| ѿڿŮ| ¹͵Ʒվ| 999|| պƵ| ߲޵һĻ| ŷ޸| ˸һþ| avվ߹ۿ| ŷÿѵӰ߹ۿ| avҹƷһ |