我想从rowstate属性值Deleted删除数据表中的所有行。
DataTable dt;
dt.Clear(); // this will not set rowstate property to delete.
目前,我正在遍历所有行并删除每一行。
有没有有效的方法? 我不想在SQL Server中删除我想使用DataTable方法。
答案 0 :(得分:4)
我们正在使用这种方式:
for(int i = table.Rows.Count - 1; i >= 0; i--) {
DataRow row = table.Rows[i];
if ( row.RowState == DataRowState.Deleted ) { table.Rows.RemoveAt(i); }
}
答案 1 :(得分:3)
这将满足任何FK级联关系,例如'delete'(DataTable.Clear()不会):
DataTable dt = ...;
// Remove all
while(dt.Count > 0)
{
dt.Rows[0].Delete();
}
答案 2 :(得分:2)
dt.Rows.Clear();
dt.Columns.Clear(); //warning: All Columns delete
dt.Dispose();
答案 3 :(得分:0)
由于您使用的是SQL Server数据库,我建议您只需执行SQL命令"DELETE FROM " + dt.TableName
。
答案 4 :(得分:0)
我会删除表格,删除所有内容的最快方法。然后重新创建表格。
答案 5 :(得分:0)
您可以在SQL Server数据库上创建一个存储过程,删除表中的所有行,从C#代码执行它,然后重新查询数据表。
答案 6 :(得分:0)
我小心地执行以下SQL命令:
DELETE FROM TABLE WHERE ID>0
答案 7 :(得分:0)
这是我在寻找这个问题之后在我自己的代码中找到的解决方案,从Jorge的答案中获取灵感。
DataTable RemoveRowsTable = ...;
int i=0;
//Remove All
while (i < RemoveRowsTable.Rows.Count)
{
DataRow currentRow = RemoveRowsTable.Rows[i];
if (currentRow.RowState != DataRowState.Deleted)
{
currentRow.Delete();
}
else
{
i++;
}
}
这样,您可以确保删除所有行,或将其DataRowState设置为Deleted。
此外,由于在枚举时修改了集合,因此不会获得InvalidOperationException,因为未使用foreach
。但是,Jorge的解决方案易受攻击的无限循环错误在这里不是问题,因为代码将增加超过其DataRowState已被设置为已删除的DataRow。
答案 8 :(得分:0)
删除数据表中的所有行
$("id/Class tbody").empty();
示例
<table id="table1">
<thead>
<th></th>
</thead>
<tbody>
<td></td>
</tbody>
</table>
code : $("#table1 tbody").empty()
;