ngth )
tbl.rows[ctrl.parentElement.rowIndex + 1].deleteCell(ctrl.cellIndex);
}
ctrl.rowSpan = ctrl._rowspan; // 设置跨度
}
}
}
}
}注意到document.worksheet对象没有?这个对象在生成表格时添加并填充,包括所有的工作表名字和表格id。其格式如下:
view plaincopy to clipboardprint?
document.worksheet = { ''table'': null, // HTML table的id ,
''name'': '''' // 工作表名字
};
document.worksheet = { ''table'': null, // HTML table的id ,
''name'': '''' // 工作表名字
};要使方向键起作用,需要为编辑框添加按键事件处理:
view plaincopy to clipboardprint?
// 编辑框的按键事件
function onTextBoxKeydown()
{
var sender = event.srcElement, // 事件属性
code = event.keyCode;
if ( sender.parentElement &&
sender.parentElement.tagName == ''TD'')
{
var tbl = sender.parentElement.parentElement.parentElement, // 表格对象
col = sender.parentElement.cellIndex, // 列号
row = sender.parentElement.parentElement.rowIndex; // 行号
switch(code) // 处理按键代码
{
case 37: // left
{
sender.onchange(); // 手动激发改动事件和在激活事件
if ( col > 1 ) // 第一列是标头,不需要激活
tbl.rows[row].cells[col - 1].onactivate();
}
break;
case 38: // top
{
sender.onchange();
if ( row > 1 )
tbl.rows[row - 1].cells[col].onactivate();
}
break;
case 39: // right
{
sender.onchange();
if ( col < tbl.rows[row].cells.length - 1 )
tbl.rows[row].cells[col + 1].onactivate();
}
break;
case 13:
case 40: // down
{
sender.onchange();
if ( row < tbl.rows.length - 1 )
tbl.rows[row + 1].cells[col].onactivate();
return false;
}
break;
}// switch
}
return true;
}
// 编辑框的按键事件
function onTextBoxKeydown()
{
var sender = event.srcElement, // 事件属性
code = event.keyCode;
if ( sender.parentElement &&
sender.parentElement.tagName == ''TD'')
{
var tbl = sender.parentElement.parentElement.parentElement, // 表格对象
col = sender.parentElement.cellIndex, // 列号
row = sender.parentElement.parentElement.rowIndex; // 行号
switch(code) // 处理按键代码
{
case 37: // left
{
sender.onchange(); // 手动激发改动事件和在激活事件
if ( col > 1 ) // 第一列是标头,不需要激活
tbl.rows[row].cells[col - 1].onactivate();
}
break;
case 38: // top
{
sender.onchange();
if ( row > 1 )
tbl.rows[row - 1].cells[col].onactivate();
}
break;
case 39: // right
{
sender.onchange();
if ( col < tbl.rows[row].cells.length - 1 )
tbl.rows[row].cells[col + 1].onactivate();
}
break;
case 13:
case 40: // down
{
sender.onchange();
if ( row < tbl.rows.length - 1 )
tbl.rows[row + 1].cells[col].onactivate();
return false;
}
break;
}// switch
}
return true;
}改动编辑框的内容后,还需要更新单元格内容和持有的数据,这需要处理onchange事件:
view plaincopy to clipboardprint?
// 编辑框的改变事件
function onTextBoxChange()
{
var src = event.srcElement; // 事件属性
if ( src.parentElement &&
src.parentElement.tagName == ''TD'' )
{
var val = src.value.trim(); // 去掉空格
if ( val != src.parentElement.dataField ) // 内容有变化?
{ // 更新数据域
src.parentElement.dataField = val;
src.parentElement.value2 = va