📄 grid.js
字号:
cellData = null;
}
var cellName = column.name;
var names = oThis.getNamesOfColumn(column);
if(names.length==1){
rowData[names[0]] = cellData;
}else{
var obj = rowData[names[0]];
if(obj == null){
obj = new Object();
rowData[names[0]] = obj;
}
rowData[names[0]][names[1]] = cellData;
}
}
oThis.afterAdd_Delete();
return oThis.addRow(rowData);
}
this.bindData = function(_data){
//全选标记复位
if(oThis.getContext().checkBox == true){
var lockedTabHeader = element.all("lockedTabHeader");
lockedTabHeader.rows[0].cells[0].children[0].checked = false;
}
rows.removeAll(); //删除所有行引用
selectedRows.removeAll();
oThis.clearData(); //删除所有行对应的dom对象
value = _data;
for(var i=0;i<value.length;i++){
var row = new SigmaRow(oThis,i);
rows[i] = row;
}
oThis.refreshScrollers();
var sumRow = new SumRow(oThis);
if(oThis.sumRow!=null){
oThis.sumRow.refresh();
}
}
this.compRowByColumn = function(row1,row2,colName,ordinal){
var v1 = oThis.getPropertyOfRow(row1,colName);
var v2 = oThis.getPropertyOfRow(row2,colName);
var r = 0;
var column = oThis.getColumnByName(colName);
if(column.mode=="number" || column.mode=="money"){
r = v1-v2;
}else if(column.mode=="check"){
if(v1==null) v1=false;
if(v2==null) v2=false;
if(v1==v2){
r = 0;
}else{
r = v1>v2?1:-1;
}
}else{
r = v1.localeCompare(v2);
}
if(ordinal==false){
return -r;
}
return r;
}
this.sortByColumn = function(colName,order){
var v = oThis.getValue();
if(order=="desc"){
order = false;
}else{
order = true;
}
v.sort(
function comp(r1,r2){
return oThis.compRowByColumn(r1,r2,colName,order);
}
);
oThis.bindData(v);
}
this.getColumnWidth = function(column){
if(column.width == null){
return 100;
}else{
return parseInt(column.width);
}
}
this.selectAll = function(selected){
if(context.checkBox){
selectedRows = [];
for(var i=0;i<rows.length;i++){
var td = rows[i].autoCreatedCell["auto_checkbox"];
var input = td.children(0);
input.checked = selected;
rows[i].setSelected(input.checked);
}
}
}
this.getColumnsInfo = function(){
return columns;
}
this.checkColumns = function(){
return true;
//1、检查mode="select"的列是否绑定选择的集合
for(var i=0;i<columns.length;i++){
var column = columns[i];
if(column.mode=="select"){
var selectArr = column.options;
if(selectArr==null || selectArr.length<1)
alert("列'"+column.caption + "'缺少选项");
}
}
}
this.columnHeaders = new Array();
this.bindHeader = function(_columns){
columns = _columns;
oThis.checkColumns();
var lockedTabHeader = element.all("lockedTabHeader");
try{
lockedTabHeader.deleteRow(0);
}catch(e){
}
var row = lockedTabHeader.insertRow();
oThis.getLockedColumns();
var start = 0;
if(context.checkBox){
var cell = row.insertCell(start);
var input = document.createElement("input");
input.type = "checkbox";
input.onclick = function(){
oThis.selectAll(this.checked);
};
cell.appendChild(input);
cell.className = "header";
cell.style.width = 40;
start++;
}else if(context.radioBox){
var cell = row.insertCell(start);
start++;
cell.className = "header";
cell.style.width = 40;
cell.innerText = " ";
}
if(context.sequence){
var cell = row.insertCell(start);
cell.innerText = "序号";
cell.className = "header";
cell.style.width = 40;
cell.onclick = function(){
}
start++;
}
for(var i=0;i<lockedColumns.length;i++){
var column = lockedColumns[i];
var cell = row.insertCell(start+i);
cell.column = column;
cell.className = "header";
cell.innerText = column.caption;
cell.style.width = oThis.getColumnWidth(column);
cell.order = "desc"
cell.onmouseover = function(){
this.style.cursor = "hand";
}
cell.onmouseout = function(){
this.style.cursor = "";
}
cell.onclick = function(){
if(this.order == "asc"){
this.order = "desc";
}else{
this.order = "asc";
}
oThis.sortByColumn(this.column.name,this.order);
}
oThis.columnHeaders[column.name] = cell;
}
//画非锁定列表头
var unLockedTabHeader = element.all("unLockedTabHeader");
try{
unLockedTabHeader.deleteRow(0);
}catch(e){
}
var row2 = unLockedTabHeader.insertRow();
oThis.getUnLockedColumns();
for(var i=0;i<unLockedColumns.length;i++){
var column = unLockedColumns[i];
var cell = row2.insertCell(i);
cell.column = column;
cell.className = "header";
cell.innerText = column.caption;
cell.style.width = oThis.getColumnWidth(column);
oThis.columnHeaders[column.name] = cell;
cell.onmouseover = function(){
this.style.cursor = "hand";
}
cell.onmouseout = function(){
this.style.cursor = "";
}
cell.onclick = function(){
if(this.order == "asc"){
this.order = "desc";
}else{
this.order = "asc";
}
oThis.sortByColumn(this.column.name,this.order);
}
}
}
this.getLockedColumns = function(){
if(lockedColumns==null){
lockedColumns = oThis.getColumns("true");
}
return lockedColumns;
}
this.getUnLockedColumns = function(){
if(unLockedColumns==null)
unLockedColumns = oThis.getColumns("false");
return unLockedColumns;
}
this.getOrderedColumns = function(){
var array = [];
var locked = oThis.getLockedColumns();
var unlocked = oThis.getUnLockedColumns();
for(var i=0;i<locked.length;i++){
array[array.length] = locked[i];
}
for(var i=0;i<unlocked.length;i++){
array[array.length] = unlocked[i];
}
return array;
}
this.clearAllListener = function(){
for(var i=0;i<columns.length;i++){
var c = columns[i];
if(c.listener!=null){
c.listener = null;
}
}
}
this.getColumns = function(locked){
var cs = [];
for(var i=0;i<columns.length;i++){
var c = columns[i];
if(c.locked == null){
c.locked = "false";
}
if(locked==c.locked){
cs[cs.length] = columns[i];
}
}
return cs;
}
this.getColumnByName = function(colName){
for(var i=0;i<columns.length;i++){
column = columns[i];
if(column.name == colName){
return column;
}
}
return null;
}
this.getRows = function(){
return rows;
}
this.getRow = function(index){
return rows[index];
}
this.onRowDbClick = function(){
}
this.onSelect = function(){
}
var colResize = element.all("colResize");
var headerArea = element.all("headerArea");
var rs_start = 0;
var start_width = 0;
var nextColStartWidth = 0;
this.setColumnWidth = function(column,newWidth){
column.width = newWidth;
oThis.debug("set column name,column:" + column.name + ",width:" + column.width);
//列头宽度
oThis.columnHeaders[column.name].style.width = newWidth;
for(var i=0;i<rows.length;i++){
var row = rows[i];
var cell = row.cells[column.name].element;
cell.style.width = newWidth;
}
}
headerArea.onmousemove = function(){
var cell = oThis.findResizingCell();
if(cell!=null){
offset = event.clientX - rs_start;
var newWidth = start_width + offset;
if(newWidth<5){
newWidth = 5;
offset = newWidth - start_width;
}
oThis.setColumnWidth(cell.column,newWidth);
if(offset<0){
var column = oThis.getNextColumn(cell.column);
if(column!=null){
var nextColWidth = nextColStartWidth - offset;
oThis.setColumnWidth(column,nextColWidth);
}
}
oThis.refreshScrollers();
return;
}
var src = window.event.srcElement;
if(src.column!=null){
if(src.resizing==null || src.resizing==false){
if(src.offsetWidth - event.offsetX<=3){
oThis.element.style.cursor = "E-resize";
}else{
oThis.element.style.cursor = "";
}
}
}
}
headerArea.onmousedown = function(){
var src = window.event.srcElement;
if(src.column!=null){
if(src.offsetWidth - event.offsetX<=3){
src.resizing = true;
rs_start = event.clientX;
oThis.beginResizeColumn(src);
}
}
}
headerArea.onmouseup = function(){
var src = window.event.srcElement;
if(src.column!=null){
src.resizing = false;
}
}
headerArea.onmouseout = function(){
var cell = oThis.findResizingCell();
if(cell==null){
oThis.element.style.cursor = "";
}
}
this.findResizingCell = function(){
var lockedTabHeader = element.all("lockedTabHeader");
var unLockedTabHeader = element.all("unLockedTabHeader");
var cells = lockedTabHeader.rows[0].cells;
var left = 0;
for(var i=0;i<cells.length;i++){
var cell = cells[i];
if(cell.resizing == true){
return cell;
}
}
cells = unLockedTabHeader.rows[0].cells;
for(var i=0;i<cells.length;i++){
var cell = cells[i];
if(cell.resizing == true){
return cell;
}
}
}
this.beginResizeColumn = function(cell){
start_width = cell.offsetWidth;
var nextColumn = oThis.getNextColumn(cell.column);
nextColStartWidth = oThis.getColumnWidth(nextColumn);
oThis.debug("begin resize:" + cell.column.name + "'s width="+cell.offsetWidth+"; "+nextColumn.name+"'s width="+nextColStartWidth);
}
this.getNextColumn = function(column){
var columns = oThis.getOrderedColumns();
var i = columns.indexOf(column);
i++;
if(i<columns.length){
return columns[i];
}else
return null;
}
this.getColumnLeft = function(column){
var lockedTabHeader = element.all("lockedTabHeader");
var unLockedTabHeader = element.all("unLockedTabHeader");
var cells = lockedTabHeader.rows[0].cells;
var left = 0;
for(var i=0;i<cells.length;i++){
var cell = cells[i];
var c = cell.column;
if(c == column){
return left;
}else{
left += cell.offsetWidth;
}
}
cells = unLockedTabHeader.rows[0].cells;
for(var i=0;i<cells.length;i++){
var cell = cells[i];
var c = cell.column;
if(c == column){
return left;
}else{
left += cell.offsetWidth;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -