Gridx入门(2)
{field: 'artist', name: 'Artist'}
];
OK,万事俱备,现在我们可以创建一个简单的grid了:
[javascript]
var grid = new Grid({
cacheClass: Cache,
store: store,
structure: columns
}, 'gridNode'); //Assume we have a node with id 'gridNode'
grid.startup();
Gridx继承于dijit._WidgetBase, 因此它支持所有widget的基本特性。
以上创建的grid是一个最基本但可用的grid。我们可以灵活的给它加上很多模块,并且这些模块独立工作,它们之间不会相互冲突。下面一节我们将介绍如何实现这一点。
2. 基本API和API对象
Gridx引入了如下API对象:rows,columns,和cells,可以通过这些对象来操作API。
例如我们可以用如下代码来获得第2行的id:
[javascript]
var id = grid.row(1).id;
获得位于第1行第2列格子的数据:
[javascript]
var data = grid.cell(0, 1).data();
获得第3列的name属性:
[javascript]
var title = grid.column(2).name();
以上方法中的grid.row(), grid.cell() 和 grid.column()就是我们所说的API对象。它们只是一套API的容器,本身是没有状态的。因此,我们如果想获得一个cell对象,可用如下代码:
[html]
var cell = grid.cell(0, 0);
var data1 = cell.data();
然后我们改变此cell中的data,再调用:
[javascript]
var data2 = cell.data();
则data2中就得到更新过的cell data,而不是data1的值。
如果想要获得列名组成的数组,我们可以使用一个更好的API:
[javascript]
var names = grid.columns().map(function(col){
return col.name();
});
columns()和rows()方法返回的是API对象数组。这两个方法同样接受指定范围的参数。例如,如果你只想获得前3列的列名,就可以写成:
[javascript]
grid.columns(0, 3);
如果需要从第2列开始的两列列名,则可以写成:
[javascript]
grid.columns(1, 2);
获得从第3列开始的后面所有列名:
[javascript]
grid.columns(2);
返回的数组可以用各种非常有用的数组函数才操作,例如map,filter,forEach,some 以及 every。
我们可以使用API对象来调用模块提供的更多方法。例如,如果加载了sort模块,我们可以这样写:
[javascript]
grid.column(0).sort();
下面一些其它常用的API方法:
[javascript]
grid.setColumns(columnStructure); //Reset the column structure
grid.setStore(store); //Reset store
grid.columnCount(); //Faster than grid.columns().length;
grid.rowCount(); //Faster than grid.rows().length;
grid.resize(); //This is what layout widgets (containers) need.
模块提供了模块API,它们在底层整合,因此不必担心模块之间会相互影响造成冲突。下一节我们将具体介绍更多关于模块API的内容。
3. 模块
几乎所有的Gridx UI特性都是以模块的方式实现,包括表头,表格体(所有行), 滚动条(横向和纵向滚动条)等。不过这些是核心模块,缺省状态下是自动加载的。非核心模块与EnhancedGrid的插件“plugin”类似,可以根据需要选择要加载的模块。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>