📄 boxgrid.js
字号:
return row; }; this.setData=function(data, rownum) { if (!rownum) rownum=this.table.rows.length-1; this.table.rows[rownum].data=data; }; this.setLink=function(action, cellnum, rownum) { if (!rownum) rownum=this.table.rows.length-1; if (!cellnum) cellnum=0; var cell=this.table.rows[rownum].cells[cellnum]; if (!cell) return; cell.style.backgroundColor='#F6FCFF'; cell.style.cursor='pointer'; cell.onclick=new Function('boxTabMenuAction(this, "'+action+'")'); }; this.addTitle=function(html, rownum) { var row; if (typeof rownum == 'undefined' || rownum > this.table.rows.length || rownum < 0) row=this.table.insertRow(this.table.rows.length); else row=this.table.insertRow(rownum); var cell=row.insertCell(0); cell.className='title'; cell.colSpan=this.header.length; cell.innerHTML=html; }; this.initDataset=function(mdi) { if (!this.dataset) { this.dataset=new boxGridDataset(this, mdi); this.dataset.dbExec(); } return this.dataset; };}function boxGridToggle(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; var tr=oFindParentByTagName(eventSrc, 'TR'); if (!tr) return; if (eventSrc.tagName == 'TEXTAREA' || eventSrc.tagName == 'INPUT') return; var table=oFindParentByTagName(tr, 'TABLE'); if (!table) return; var grid=table.grid; if (!grid) return; if (e.ctrlKey) { if (tr.className == 'select') { tr.className=''; var idx=arraySearch(tr, grid.selectedRow); if (idx >= 0) grid.selectedRow.splice(idx, 1); }else{ tr.className='select'; grid.selectedRow.push(tr); } return; } if (e.shiftKey && grid.selectedRow.length > 0) { var start=Math.min(grid.selectedRow[grid.selectedRow.length-1].rowIndex, tr.rowIndex); var end=Math.max(grid.selectedRow[grid.selectedRow.length-1].rowIndex, tr.rowIndex); for (; start <= end; start++) { grid.selectedRow.push(table.rows[start]); table.rows[start].className='select'; } }else{ for (var i=grid.selectedRow.length; i--;) { if (grid.selectedRow[i] != tr) grid.selectedRow[i].className=''; } if (grid.selectedRow.length > 1) tr.className=''; grid.selectedRow.splice(0, grid.selectedRow.length); if (tr.className == 'select') tr.className=''; else{ tr.className='select'; grid.selectedRow.push(tr); } }}function boxGridDatasetOrderChange(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; var table=oFindParentByTagName(eventSrc, 'TABLE'); if (!table) return; var grid=table.grid; if (!grid || !grid.dataset) return; grid.dataset.orderChange(innerText(eventSrc).replace(/[▼▲]$/, ''));}function boxGridDatasetEdit(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; if (eventSrc && eventSrc.firstChild && eventSrc.firstChild.tagName == 'TEXTAREA') return; var table=oFindParentByTagName(eventSrc, 'TABLE'); if (!table) return; var grid=table.grid; if (!grid || !grid.dataset) return; if (eventSrc.tagName != 'TD') return; if (eventSrc.cellIndex == 0) return; var curdata=innerText(eventSrc); var width=Math.max(0, eventSrc.clientWidth); //eventSrc.innerHTML='null? <input type=checkbox onclick="boxGridDatasetEditNull(this)"><br>'; eventSrc.innerHTML=''; eventSrc.style.padding='0px'; var input=appendNew(eventSrc, 'TEXTAREA'); addEvent(input, 'blur', boxGridDatasetEditEnd); addEvent(input, 'click', _eventBubble); input.curdata=curdata; input.value=curdata; input.style.width=width; input.focus(); if (_isIE) input.select(); e.cancelBubble=true;}function boxGridDatasetEditNull(check) { if (!check) return; if (check.checked == true) { if (!confirm('Set to null?')) { check.checked=check.defaultChecked=false; return; } var table=oFindParentByTagName(check, 'TABLE'); if (!table) return; var grid=table.grid; if (!grid || !grid.dataset) return; var cell=oFindParentByTagName(check, 'TD'); var row=oFindParentByTagName(check, 'TR'); if (!cell || !row) return; if (!grid.dataset.mdi || !grid.dataset.mdi.data) return; var header=table.rows[0]; if (!header) return; var column=header.cells[cell.cellIndex]; if (!column) return; var columnName=innerText(column); var rowid=innerText(row.cells[0]); boxDbExec(grid.dataset.mdi, 'UPDATE "'+grid.dataset.mdi.data.name+'" SET "'+(columnName)+'"=NULL WHERE rowid='+rowid, 'update'); innerText(cell, ''); }}function boxGridDatasetEditEnd(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; var table=oFindParentByTagName(eventSrc, 'TABLE'); if (!table) return; var grid=table.grid; if (!grid || !grid.dataset) return; if (eventSrc.tagName != 'TEXTAREA') return; var cell=oFindParentByTagName(eventSrc, 'TD'); var row=oFindParentByTagName(eventSrc, 'TR'); if (!cell || !row) return; cell.style.padding=''; if (eventSrc.curdata == eventSrc.value || isNaN(parseInt(row.cells[0].innerHTML))) { /* if (isNaN(parseInt(row.cells[0].innerHTML)) && !eventSrc.value) { if (confirm('set Null?')) cell.notnull=false; else cell.notnull=true; } */ innerText(cell, eventSrc.value); return; } if (!grid.dataset.mdi || !grid.dataset.mdi.data) return; var header=table.rows[0]; if (!header) return; var column=header.cells[cell.cellIndex]; if (!column) return; var columnName=innerText(column); var rowid=innerText(row.cells[0]); if (!eventSrc.value && confirm('Set null?')) { boxDbExec(grid.dataset.mdi, 'BEGIN;UPDATE "'+grid.dataset.mdi.data.name+'" SET "'+(columnName)+'"=NULL WHERE rowid='+rowid+';COMMIT;', 'update'); innerText(cell, eventSrc.value); }else/* if (confirm('Edit commit?')) */{ boxDbExec(grid.dataset.mdi, 'BEGIN;UPDATE "'+grid.dataset.mdi.data.name+'" SET "'+(columnName)+'"=\''+(eventSrc.value.replace(/\'/g, '\'\''))+'\' WHERE rowid='+rowid+';COMMIT;', 'update'); innerText(cell, eventSrc.value); }/*else innerText(cell, eventSrc.curdata);*/}var _boxGridResizer=null;var _boxGridResizerTd=null;var _boxGridResizerTdX=0;var _boxGridResizerDir='';function boxGridHeaderResizeCursor(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; if (!eventSrc || (eventSrc.tagName != 'TD' && eventSrc.tagName != 'A')) return; var x=(_isIE)?e.offsetX:e.pageX-lX(eventSrc); if (_boxGridResizerTd) { _boxGridResizer.style.left=Math.max(_boxGridResizerTdX, e.clientX-4); }else{ e.cancelBubble=true; if (eventSrc.tagName != 'TD') return; if (x < 3 || x > (eventSrc.offsetWidth-3)) eventSrc.style.cursor='col-resize'; else eventSrc.style.cursor='default'; }}function boxGridHeaderResizeStart(e) { if (_isIE && !e) e=window.event; if (!e) return; var eventSrc=(_isIE)?e.srcElement:e.target; if (!eventSrc || eventSrc.tagName != 'TD') return; var x=(_isIE)?e.offsetX:e.pageX-lX(eventSrc); if (x < 3 || x > (eventSrc.offsetWidth-3)) { if (x < 3) { if (eventSrc.cellIndex == 0) return; _boxGridResizerDir='left'; eventSrc=eventSrc.previousSibling; }else _boxGridResizerDir='right'; _boxGridResizerTd=eventSrc; _boxGridResizerTdX=lX(eventSrc); if (!_boxGridResizer) { _boxGridResizer=appendNew(document.body, 'DIV'); _boxGridResizer.className='boxGridResizer'; _boxGridResizer.innerHTML='<img style="width:1px;height:1px">'; } _boxGridResizer.style.display='block'; _boxGridResizer.style.top=lY(eventSrc)-((_isIE)?2:0); _boxGridResizer.style.height=eventSrc.offsetParent.parentNode.offsetHeight; _boxGridResizer.style.left=e.clientX-2; document.body.style.cursor='col-resize'; addEvent(document, 'mouseup', boxGridHeaderResizeEnd); }}function boxGridHeaderResizeEnd(e) { if (_boxGridResizerTd && _boxGridResizer) _boxGridResizerTd.style.width=_boxGridResizer.offsetLeft-_boxGridResizerTdX-8; _boxGridResizerTd=null; document.body.style.cursor='default'; removeEvent(document, 'mouseup', boxGridHeaderResizeEnd); if (_boxGridResizer) _boxGridResizer.style.display='none';}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -