Table.Rows.Remove(dr)和Table.Delete()的区别

一个DataRow对象刚被创建之后其状态是Detached,是孤立的一个存在,所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到DataTable后,   这个DataRow的状态就转变为Added。

当修改了这个DataRow后,这个DataRow状态转为Modified,当用DataRow.Delete()方法删除DataRow后,DataRow状态将转为Deleted,不过此行还存在在DataTable中的,只是状态改变了,这时用DataTable.Rows.Count查看行数,跟删除前是一样的。

只有在调用了DataTable.Remove(DataRow)方法后,此DataRow才被从DataTable移除,状态也回复到Detached孤立状态。但对于远程的Remoting的数据集DataTable.Remove(DataRow)方法不能从测表中移出;只能用DataRow.Delete()方法加 AcceptChanges()方法

MSDN对DataRow.Delete 方法的解释:如果行的 RowState 是“Added”,则该行将从表中移除。在使用 Delete 方法后,RowState 变成“Deleted”。在您调用 AcceptChanges 之前,它一直保持“已删除”。可通过调用 RejectChanges 取消删除行。

用Delete(),DataSet的HasChanges()=true;
用Remove(),DataSet的HasChanges()=false;

本文系转载http://blog.csdn.net/ojekleen/archive/2007/10/22/1837058.aspx

转载于:https://www.cnblogs.com/Tim_Liu/archive/2011/04/26/2029475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
删除行和删除列的按钮不会直接影响列宽的调整。这两个按钮只是用于删除表格中的行和列,对于已经存在的列宽度不会产生影响。 然而,如果你在删除行或列后重新调整了表格的宽度,可能会影响到列宽的调整。例如,如果你删除了一列,但是表格的总宽度保持不变,那么剩余的列会自动调整宽度以填充表格的宽度。这可能导致原本希望设置的列宽度被改变。 如果你希望在删除行或列后保持原有的列宽度,可以在删除行或列之前先记录下每一列的宽度,并在删除后重新设置每一列的宽度。 以下是一个示例代码,演示如何在删除行或列后保持原有的列宽度: ```javascript function deleteRow() { if (table.rows.length > 2) { // 记录每一列的宽度 var columnWidths = []; for (var i = 0; i < table.rows[0].cells.length; i++) { columnWidths.push(table.rows[0].cells[i].offsetWidth); } table.deleteRow(table.rows.length - 1); // 重新设置每一列的宽度 for (var i = 0; i < table.rows[0].cells.length; i++) { table.rows[0].cells[i].style.width = columnWidths[i] + "px"; } } } function deleteColumn() { if (table.rows[0].cells.length > 1) { // 记录每一列的宽度 var columnWidths = []; for (var i = 0; i < table.rows.length; i++) { columnWidths.push(table.rows[i].cells[table.rows[i].cells.length - 1].offsetWidth); } for (var i = 0; i < table.rows.length; i++) { table.rows[i].deleteCell(table.rows[i].cells.length - 1); } // 重新设置每一列的宽度 for (var i = 0; i < table.rows.length; i++) { for (var j = 0; j < table.rows[i].cells.length; j++) { table.rows[i].cells[j].style.width = columnWidths[j] + "px"; } } } } ``` 在这个示例中,我添加了一个名为 `columnWidths` 的数组来记录每一列的宽度。在删除行或列之前,我先遍历表格中的单元格,将它们的宽度存储到 `columnWidths` 数组中。然后,在删除行或列之后,我再次遍历表格中的单元格,并根据 `columnWidths` 数组重新设置每一列的宽度。 希望这个示例能够帮助你保持原有的列宽度。如果还有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值