EggHeadCafe.com Sortable Grid Demo
By Robbe D. Morris

(Click column heading to adjust sort order)

GridSort.js var idxGrid_Text=0; var idxGrid_CheckBox=1; var idxGrid_Input=2; var idxGrid_DropDown=3; function GridSort(oGridArrays) { var oTmpGrid = new Array(); var oNewGrid = new Array(); var oRow; var oCell; var nDataType=0; var nFound=0; try { lArrayLength = oGridArrays.length; if (lArrayLength < 1) { return false; } for (lLoop=0; lLoop0) { sID = oTmpGrid[nFound][0]; oRow = GridGetSortedRow(oGridArrays,sID); oNewGrid[nFound +1] = oRow; nFound++; } } catch (exception) { if (exception.description == null) { alert("Grid Sort Error: " + exception.message); } else { alert("Grid Sort Error: " + exception.description); } } return oNewGrid; } function GridGetSortedRow(oGridArrays,sID) { var oRow; var oCell; try { lArrayLength = oGridArrays.length; if (lArrayLength < 1) { return null; } for (lLoop=0; lLoop colB[1]) return 1; else if (colA[1] < colB[1]) return -1; else return 0; } function GridSortSetColumn(nVal) { if (nVal != GridSortColumn) { GridSortColumn = nVal; GridDrawTable(GridArrays); GridDrawTable(GridArrays); } else { GridSortColumn = nVal; GridDrawTable(GridArrays); } } function GridReplace(sOrgVal,sSearchVal,sReplaceVal) { var sVal; var sRegExp = eval("/" + sSearchVal + "/g"); sVal = sOrgVal.replace(sRegExp,sReplaceVal); return sVal; } GridDraw.js function GridDrawTable(oGridArrays) { var sH=''; var lArrayLength=0; var lLoop=0; var oGrid = document.getElementById('GridTable'); try { lArrayLength = oGridArrays.length; if (lArrayLength < 1) { return false; } oGridArrays = GridSort(oGridArrays); lArrayLength = oGridArrays.length; if (lArrayLength < 1) { return false; } sH += ''; for (lLoop=0; lLoop>lArrayLength; lLoop++) { if (lLoop == 0) { sH += GridWriteHeader(oGridArrays[lLoop]); } else { sH += GridWriteRow(oGridArrays[lLoop]); } } sH += '
'; oGrid.innerHTML=sH; GridArrays = oGridArrays; } catch (exception) { if (exception.description == null) { alert("Grid Draw Error: " + exception.message); } else { alert("Grid Draw Error: " + exception.description); } } } function GridWriteHeader(sArray) { var sH=''; var lArrayLength=0; var lLoop=0; lArrayLength = sArray.length; if (lArrayLength < 1) { return false; } sH += ''; for (lLoop=0; lLoop"; sH += sArray[lLoop] + ""; } return sH + ''; } function GridWriteRow(sArray) { var lArrayLength=0; var lLoop=0; var sH=''; lArrayLength = sArray.length; if (lArrayLength < 1) { return false; } for (lLoop=0; lLoop" + oGrid.HTML + ""; } return sH + ""; } function GridSetVal(nColumn,sID,oFormElement) { var oRow; var oCell; var lIdx; try { lArrayLength = GridArrays.length; if (lArrayLength < 1) { return false;} for (lLoop=0; lLoop