Javascript 排序a';可手持';然后能够从表中读取数据
我希望能够对一个handsontable进行排序,然后能够从表中读取数据。我已经拼凑了这段代码,这段代码很有效,但似乎有更好的方法对屏幕上的数据进行排序,然后能够按排序的顺序提取数据Javascript 排序a';可手持';然后能够从表中读取数据,javascript,jquery,handsontable,Javascript,Jquery,Handsontable,我希望能够对一个handsontable进行排序,然后能够从表中读取数据。我已经拼凑了这段代码,这段代码很有效,但似乎有更好的方法对屏幕上的数据进行排序,然后能够按排序的顺序提取数据 这个javascript插件似乎针对快速屏幕操作进行了优化。“仅对表视图进行排序。数据源保持原始顺序。”要同时对表视图和数据源进行排序,似乎必须同时执行或数据源操作,然后重新应用 参考资料: 文档建议我们使用sort和render函数,但我们仍然需要处理排序顺序问题 文件: $(文档).ready(函数(){
这个javascript插件似乎针对快速屏幕操作进行了优化。“仅对表视图进行排序。数据源保持原始顺序。”要同时对表视图和数据源进行排序,似乎必须同时执行或数据源操作,然后重新应用 参考资料: 文档建议我们使用sort和render函数,但我们仍然需要处理排序顺序问题 文件:
$(文档).ready(函数(){
var-sortCol=0;
var-mysort方向;
var myArrayOfArrays=[
[66,'AA',1],
[55,'BB',3],
[44,'CC',2]
];
// ----------------------------------------------------
//手持台设置
// ----------------------------------------------------
$('exampleGrid')。可手持({
资料:myArrayOfArrays,
会议记录:1,
colHeaders:是的,
上下文菜单:正确,
是的,
//使用特殊侦听器获取列号,然后对基础数组进行排序,因为这不是默认行为。
afterOnCellMouseDown:函数(更改,源){
如果(源['row']=-1){
sortCol=源['col'];
//获取当前排序方向
mySortDirection=sortDirection($('#exampleGrid')。可手持('getInstance');
var myTableData=$('#exampleGrid').handsontable('getData');
//使用custome回调执行排序
myArrayOfArrays=myArrayOfArrays.sort(fnSortingFunction);
//$(“#示例网格”).handsontable('render');
//将原始数组的内容显示回屏幕
$('#textOut').html(“”);
fnShowArray(myArrayOfArrays);
}
}
});//结束可手持的定义
// ----------------------------------------------------
//排序函数-回调
// ----------------------------------------------------
函数fnsorting函数(a,b){
如果(mySortDirection===‘升序’){
if(a[sortCol]b[sortCol])返回1;
}
否则{
如果(a[sortCol]b[sortCol])返回-1;
}
返回0;
}
// ----------------------------------------------------
//确定排序的方式:修复bug?
// ----------------------------------------------------
函数sortDirection(此表){
if(thisTable.sortingEnabled&&typeof thisTable.sortColumn!=“未定义”){
//如果sortOrder===false,则顺序为降序,因此将其设为升序
如果(thisTable.sortOrder==false){
thisTable.sortOrder=true;
返回“升序”;
}
否则{
thisTable.sortOrder=false;
返回“下降”;
}
}
否则{
thisTable.sortOrder=true;
返回“升序”;
}
};
// ----------------------------------------------------
//将数组内容显示回屏幕
// ----------------------------------------------------
函数fnShowArray(myArrayofArrays){
$('#textOut')。追加(“
转储表数据:
”);
$.each(MyArrayOfarray,函数(index1,myRow){
$.each(myRow,function(index2,myCell){
$('#textOut')。追加(myCell+“-”);
});
$('#textOut')。追加(
);
});
};
})//结束jquery
为什么不从数组中读取数据,而不是从数组中读取数据?此javascript插件似乎针对快速屏幕操作进行了优化。“仅对表视图进行排序。数据源保持原始顺序。”要同时对表视图和数据源进行排序,您似乎必须同时执行或执行数据源排序,然后重新应用。排序数组比从html表中提取数据容易得多,感谢您的输入!在我的示例中,在对hansontable html表进行排序之后,我使用myArrayOfArrays.sort(fnSortingFunction)对数据源数组进行排序
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="../jquery/jquery.js" type="text/javascript"></script>
<script src="../handsontable/dist/jquery.handsontable.full.js"></script>
<link rel="stylesheet" media="screen" href="../handsontable/dist/jquery.handsontable.full.css">
<script type="text/javascript">
$( document ).ready(function() {
var sortCol = 0;
var mySortDirection;
var myArrayOfArrays = [
[66,'AA',1],
[55,'BB',3],
[44,'CC',2]
];
// ----------------------------------------------------
// HandsTable Setup
// ----------------------------------------------------
$('#exampleGrid').handsontable({
data: myArrayOfArrays,
minSpareRows: 1,
colHeaders: true,
contextMenu: true,
columnSorting: true,
// use special listener to get column number, then sort underlying array as this is not default behaviour.
afterOnCellMouseDown: function (changes, source) {
if (source['row'] === -1) {
sortCol = source['col'];
// get current sort direction
mySortDirection = sortDirection($('#exampleGrid').handsontable('getInstance'));
var myTableData = $('#exampleGrid').handsontable('getData');
// perform sort with custome callback
myArrayOfArrays = myArrayOfArrays.sort(fnSortingFunction);
// $('#exampleGrid').handsontable('render');
// display content of original array back to to screen
$('#textOut').html("");
fnShowArray(myArrayOfArrays);
}
}
}); // end handsontable definition
// ----------------------------------------------------
// Sort function - callback
// ----------------------------------------------------
function fnSortingFunction(a,b) {
if (mySortDirection === 'Ascending'){
if (a[sortCol] < b[sortCol]) return -1;
if (a[sortCol] > b[sortCol]) return 1;
}
else{
if (a[sortCol] < b[sortCol]) return 1;
if (a[sortCol] > b[sortCol]) return -1;
}
return 0;
}
// ----------------------------------------------------
// Determine which way to sort, TO DO: fix bugs?
// ----------------------------------------------------
function sortDirection(thisTable){
if (thisTable.sortingEnabled && typeof thisTable.sortColumn != 'undefined') {
//if sortOrder === false, the order is descending, so make it ascending
if(thisTable.sortOrder === false){
thisTable.sortOrder = true;
return "Ascending";
}
else{
thisTable.sortOrder = false;
return "Descending";
}
}
else{
thisTable.sortOrder = true;
return "Ascending";
}
};
// ----------------------------------------------------
// Show content of array back to Screen
// ----------------------------------------------------
function fnShowArray(myArrayofArrays){
$('#textOut').append("<br/><b>Dump Table Data: </b><br/>");
$.each( myArrayofArrays, function( index1, myRow ) {
$.each( myRow, function( index2, myCell ) {
$('#textOut').append(myCell + " - " );
});
$('#textOut').append("<br/>");
});
};
}) // end jquery
</script>
<div id="exampleGrid" class="dataTable"></div>
<div id="textOut" ></div>