上个月做的,昨天发现还是忘记了,那就记一下吧
使用的cell版本为cell52 2004-7-21版
提供接口函数为:
IsCellSelected 检测单元格是否选中
DeleteRow 删除行(存在bug,导致不能直接删除指定一行)
删除办法为 逆向遍历所有数据行,判断是否选中并执行删除操作
逆向遍历的的好处是删除行后所有未删除行的下标不会变化
deleteRow删除存在bug导致遍历时指定删除一行时会将之前所有行删除
解决办法为在删除行命令后加入一句移动指令MoveToCell
js代码如下:
function DelRow()
{
var iCount = 0;
iEndRow=form1.DCellWeb1.GetRows(0)-1;
for (iCurrentRow = iEndRow; iCurrentRow>=iBeginRow; iCurrentRow--)
{
if(form1.DCellWeb1.IsCellSelected(2,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(3,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(4,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(5,iCurrentRow)>0 )
iCount ++;
}
if (iCount ==0)
{
alert("请先框选需要删除的行。");
return;
}
else
{
if (window.confirm("当前选中"+iCount+"行,执行删除?"))
{
for (iCurrentRow = iEndRow; iCurrentRow>=iBeginRow; iCurrentRow--)
{
if(form1.DCellWeb1.IsCellSelected(2,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(3,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(4,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(5,iCurrentRow)>0 )
{
form1.DCellWeb1.DeleteRow(iCurrentRow,1,0);
form1.DCellWeb1.MoveToCell(iStatusCol,iCurrentRow);
}
}
}
}
}
{
var iCount = 0;
iEndRow=form1.DCellWeb1.GetRows(0)-1;
for (iCurrentRow = iEndRow; iCurrentRow>=iBeginRow; iCurrentRow--)
{
if(form1.DCellWeb1.IsCellSelected(2,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(3,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(4,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(5,iCurrentRow)>0 )
iCount ++;
}
if (iCount ==0)
{
alert("请先框选需要删除的行。");
return;
}
else
{
if (window.confirm("当前选中"+iCount+"行,执行删除?"))
{
for (iCurrentRow = iEndRow; iCurrentRow>=iBeginRow; iCurrentRow--)
{
if(form1.DCellWeb1.IsCellSelected(2,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(3,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(4,iCurrentRow)>0 || form1.DCellWeb1.IsCellSelected(5,iCurrentRow)>0 )
{
form1.DCellWeb1.DeleteRow(iCurrentRow,1,0);
form1.DCellWeb1.MoveToCell(iStatusCol,iCurrentRow);
}
}
}
}
}