To work around this issue, use DHTML to detect when you are
about to delete the last row or the last cell. Do not call the
ExecCommand (DECMD_DELETECELLS) method or the
ExecCommand (DECMD_DELETEROWS) method. Instead, set the outerHTML to null:
<html>
<body>
<object ID="myedit" CLASS="myedit" CLASSID="clsid:2D360201-FFF5-11d1-8D03-00A0C959BC0A" width=100% height=60%></object>
<object ID="mytableinfo" CLASS="mytableinfo" CLASSID="clsid:47B0DFC7-B7A3-11D1-ADC5-006008A5848C"></object>
<input type="button" value="Insert Table" onclick="OnInsertTable()">
<input type="button" value="Delete Table Row" onclick="OnDeleteRow()">
<input type="button" value="Delete Table Cell" onclick="OnDeleteCell()">
<input type="button" value="Show HTML" onclick="ShowHTML()">
<script>
// DECMD_INSERTTABLE=5022
// DECMD_DELETE=5004
// DECMD_DELETECELLS=5005
// DECMD_DELETECOLS=5006
// DECMD_DELETEROWS=5007
function OnInsertTable()
{
document.mytableinfo.NumRows=1;
document.mytableinfo.NumCols=2;
document.mytableinfo.Caption = "New Table ";
document.myedit.ExecCommand(5022,0,document.mytableinfo);
}
function getSelectedTable()
{
try
{
ctlRg = document.myedit.DOM.selection.createRange();
pelem=ctlRg.parentElement();
i=0;
while ((pelem.tagName!="TABLE")&&(i<20))
{
pelem=pelem.parentElement;
i++;
}
if (i==20) return -1;
return pelem;
}
catch(e)
{
return -1;
}
}
function getNumCells()
{
etable=getSelectedTable();
if (etable!=-1) return etable.cells.length; else return -1;
}
function ShowHTML()
{
alert(document.myedit.DocumentHTML);
}
function getNumRows()
{
etable=getSelectedTable();
if (etable!=-1) return etable.rows.length; else return -1;
}
function OnDeleteRow()
{
nbrows=getNumRows();
if (nbrows==-1) return;
if (nbrows==1) // if last row then delete it using DHTML
{
getSelectedTable().outerHTML='';
}
else document.myedit.ExecCommand(5007);
}
function OnDeleteCell()
{
nbcell=getNumCells();
if (nbcell==-1) return;
if (nbcell==1) // if last cell then delete it using DHTML
{
getSelectedTable().outerHTML='';
}
else document.myedit.ExecCommand(5005);
}
</script>
</body>
</html>