前两天,同事叫我帮忙调查如何不让dojo的datagrid排序。dojo中关于datagrid的资料比较少,本人找到的只有源代码和里面的几个测试例子。
grid和datagrid在命名空间dojox.grid中。
方法1:修改grid的canSort方法。
代码:
<div id="myGrid" dojoType="dojox.Grid" canSort="return false;"
structure="layout" model="model" />
这是最直接的方法。
方法2:修改model中canSort方法。
代码:
<script>
......
......
var model = new dojox.grid.data.Table(null, data);
model.canSort = function(){return false;}
......
......
</script>
<div id="myGrid" dojoType="dojox.Grid"
structure="layout" model="model" />
方法3:自己实现数据绑定,应用dojox.grid.data.Dynamic模型。
代码:
<script type="text/javascript">
function getRow(inRowIndex){
return ' ' + inRowIndex;
}
var layoutCountries = [
// view 0
{ type: 'dojox.GridRowView', width: '20px' },
// view 1
{ cells: [[{ name: "Row", get: getRow , width: 5}]]}
];
</script>
<div id="grid" jsId="grid" dojoType="dojox.Grid" elasticView="2"
model="dataModel" structure="layoutCountries ">
</div>
这样Row这一列就不能排序。
方法4:使用dojox.VirtualGrid而不是dojox.Grid。
我目前还不知道dojox.VirtualGrid、dojox.grid和dojox.DataGrid之间的区别,哪位朋友知道的话请告诉我一声。
有关定制排序的,可以参考dojox/grid/compat/tests目录下的例子。