Javascript 即使我定义了自己的函数,Google可视化表也会进行排序

Javascript 即使我定义了自己的函数,Google可视化表也会进行排序,javascript,events,google-visualization,Javascript,Events,Google Visualization,我对谷歌可视化库有点意见。我在屏幕上构建了一个非常简单的表,我需要禁用排序,但只针对某一列。我查阅了他们的文档,发现您可以为将覆盖默认值的事件定义自己的函数,但它不起作用。这里有一个非常简单的例子 var chart = new google.visualization.Table(document.getElementById('myTable')); google.visualization.events.addListener(chart, 'sort', function(e) { ha

我对谷歌可视化库有点意见。我在屏幕上构建了一个非常简单的表,我需要禁用排序,但只针对某一列。我查阅了他们的文档,发现您可以为将覆盖默认值的事件定义自己的函数,但它不起作用。这里有一个非常简单的例子

var chart = new google.visualization.Table(document.getElementById('myTable'));
google.visualization.events.addListener(chart, 'sort', function(e) { handleSort(e, chart); });
chart.draw(opts, dataTable);

function handleSort(e, chart) {
    console.log('inside sort');
    return false;
}
当我单击列标题时,我会得到控制台日志“inside sort”,但表将在该列上排序。我甚至试过

function handleSort(e, chart) {
    if(e.column == 9) {
        chart.options['sortColumn'] = 0;
        chart.options['isAscending'] = true;
    }
}
单击第9列的列标题时,它仍会对第9列进行排序。我无法让它停止在那个列上排序。基本上,我在第9列的标题中有一个按钮,当用户单击按钮时,页面会做一些事情,但是由于它对表进行了排序,它破坏了应该发生的事情。
另外,在传递给draw方法的opts对象中,我确实将“sort”设置为“event”,就像他们在文档中所说的那样,但它不起作用。函数得到运行,但不管函数中有什么,表仍然进行排序。任何帮助都将不胜感激。谢谢大家。

如果您想完全控制排序,请将
排序:“事件”
添加到

请记住,现在由您控制,因此您必须手动对数据进行排序。
sortAscending
sortColumn
选项用于设置列标题中的排序箭头

在本例中,数据最初按降序小时排序,在初始绘图上相应地设置选项

然后在排序事件中,我只允许按小时排序

google.load(“可视化”,“1”,“{packages:[“table”],回调:loadChart});
函数负载图(){
var data=new google.visualization.DataTable();
data.addColumn('string','Name');
data.addColumn('number','Salary');
data.addColumn('number','Hours');
data.addRows([
['Mike',{v:10000,f:'10000'},40],
[Jim',{v:8000,f:'8000'},30],
['Alice',{v:12500,f:'12500'},20],
['Bob',{v:7000,f:'7000'},10]
]);
var chart=new google.visualization.Table(document.getElementById('Table_div'));
变量选项={
排序:'事件',
排序:错误,
sortColumn:2
};
google.visualization.events.addListener(图表,'sort',函数(e){
如果(e.列===2){
options.sortAscending=e.升序;
options.sortColumn=e.column;
data.sort([{
列:e列,
描述:!e
}]);       
图表绘制(数据、选项);
}
});
图表绘制(数据、选项);
}