G0574's Archiver

弯月圆刀 发表于 2008-9-6 13:20

精通yui paginator

yui实在是powerful,与datatable相关的paginator就是一个例子。

先介绍一下datasource数据源,数据源抽象了各种各样的数据来源,提供了一个统一的界面。可以通过sendRequest向数据源发出数据请求,datasource返回给你一定的数据,你可以在callback中使用它。[color=Red]注意,至于如何处理返回的数据,就取决与你了。[/color]

datatable与datasource结合使用,就像上面提到的datasource不管你如何使用返回的数据,所以datatable默认的提供了三个方法用来处理来自datasource的数据。

onDataReturnInitializeTable,就是用取回来的数据来取代原来表格中的数据,相当于新建一个表格一样。
onDataReturnInsertRows,将数据插入到表格的前端,并且不考虑排序问题。而新插入的record的indexid可以通过recordInsertIndex metafield(指datasource中的metafield)来指定。
onDataReturnAppendRows,添加到表格的尾部

[[i] 本帖最后由 弯月圆刀 于 2008-9-6 13:42 编辑 [/i]]

弯月圆刀 发表于 2008-9-6 14:32

这个基础也很有帮助:

每个record都赋予一个唯一id,这个id不管排序情况,始终保持不变,它的格式是:yui-rec4。

myDataTable.getRecord("yui-rec4")就可以的到这个record对象。

每个record还有一个index(数字),这个代表当前排序状态下,它在整个recordset中的位置。

myDataTable.getRecord(0)就得到当前排序下的第一个record对象。
myDataTable.getRecordIndex(0),得到当前表格的第一行所显示的record的index。注意这个0代表的是当前显示的表格的第一行,这函数用中文来描述就是:当前表格中的第一行显示的记录的index是多少。如果没有分页,表格中的位置和index是一致的,但是在分页情况下,两者是有区别的。

在dom下,表格的每一行dom id是这样的格式:yui-dt0-dbrow0,就像你眼睛看到的表格,它的第一行肯定是这个id,不管你怎样翻页,排序都

无关。

myDataTable.getTrEl("yui-dt0-dbrow0"),就得到tr的HTMLElement对象。
myDataTable.getTrEl(0),就得到表格第一行的HTMLElement对象。

这个dom对象有一个yuiRecordId属性,这个属性其实就是record的唯一id。但是这个yuiRecordId不是固定的,随着翻页、排序不停的变化。

比如你有2页的一个表,当你在第一页的时候myDataTable.getTrEl(0)的id是yui-dt0-dbrow0,yuiRecordId的值是yui-rec0,当你翻到第二页的时候,myDataTable.getTrEl(0)的id[color=Red]还是[/color]yui-dt0-dbrow0,但是yuiRecordId的id可能[color=Red]变成[/color]了yui-rec10.

弯月圆刀 发表于 2008-9-6 15:37

请大家看一个datatable的一个配置:[code]var myTableConfig = {
    initialRequest         : 'startIndex=0&results=25',
    generateRequest        : buildQueryString,
    paginator              : myPaginator,
    paginationEventHandler : DataTable.handleDataSourcePagination
};[/code]其中的paginationEventHandler,顾名思义就是应对分页事件的,比如点击了页面链接等等。这个值DataTable.handleDataSourcePagination是datatable内置的,用来与dynamic datasource配对使用,比如TYPE_XHR或者TYPE_JSFUNCTION。

对于静态的datasource,使用DataTable.handleSimplePagination即可。如果你想做任何个性化的pagination,就根本不用接触这两个函数。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.