将一个DataTable中的数据按条件复制到另一个DataTable中的时候
出现“该行已经属于另一个表”的错误
以下为转载内容:
dtReturn.Rows.Add(dt.Rows[0].ItemArray); //--这是正确的, 关键是加上这一个ItemArray
private DataTable GetAllSons(string MemberID)
{
DataTable dtReturn =new DataTable();
string sql = " select * from view_MemberInfo where RecommenderID=" + MemberID;
if (btnSearch.CommandName.Equals("search") && !string.IsNullOrEmpty(txtKeyword.Text))
{
sql += " and Name='" + txtKeyword.Text.Trim() + "'";
}
sql = sql + " Order by AddDate Desc";
DataTable dt = MEMBER.CreateDataTable(sql);
dtReturn = dt.Clone();
if(btnSearch.CommandName.Equals("search") && !string.IsNullOrEmpty(txtKeyword.Text))
{
if(dt.Rows.Count> 0)
{
//dtReturn.Rows.Add(dt.Rows[0]); //--出现“该行已经属于另一个表”的错误
dtReturn.Rows.Add(dt.Rows[0].ItemArray); //--这是正确的
}
}
else
{
foreach (DataRow row in dt.Rows)
{
GetOneRow(dtReturn, row);
}
}
return dtReturn;
}
以下为本人自己的解决方法:
其实导致这个问题的根本不在ItemArray的转换,而在于将源表复制到目标表后,NEW的行对象本身不从属于目标表,即
DataTable newDatatable = datatable.Copy();
DataRow dataRow = newDatatable.NewRow();
这样写就不会出错了,dataRow是属性newDatatable的对象
相关推荐
在这个问题中,开发者尝试将一个DataTable中的行复制到另一个DataTable时遇到了错误:“该行已经属于另一个表”。这个错误是由于DataTable的行对象是强引用的,一旦一个行对象被添加到一个DataTable,它就不能直接...
但是,在这个操作过程中,我们可能会遇到错误提示:“该行已经属于另一个表”。这个问题的出现通常与数据行的引用有关。下面,我们将详细探讨这一问题及其解决方案。 首先,让我们了解错误提示“该行已经属于另一个...
但在实际操作过程中,有时候可能会遇到错误提示:“该行已经属于另一个表。”这通常发生在尝试将一个已经存在于某个DataTable中的DataRow对象添加到另一个DataTable中时。 要解决这个问题,首先需要了解一个DataRow...
我们需要维护两个变量,一个用于记录当前行的最大值,另一个用于记录当前列的最小值。对于每个元素,我们比较它与当前行最大值和列最小值的关系,如果找到一个元素同时满足这两个条件,那么它就是鞍点。 以下是一个...
Excel表格,想以其中某一列为索引,查找另一个表格中同样索引的行,找到该行的某个内容复制到原来的表格指定的位置中。还可以删除原有表格中重复的内容。应用场景非常多,比如:利用学生学号和考场分配表查找学生...
当你尝试删除一行数据时,如果该行已经被其他事务持有排他锁,你的操作将被阻塞并收到“记录被另一个用户锁住”的错误。这可能是以下情况导致的: 1. **事务未提交**:其他事务尚未完成其操作并提交,因此锁未释放...
如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: Code: 代码如下: INSERT INTO 目标表 SELECT * FROM 来源表; 比如要将 articles 表插入到 newArticles 表中,则是: 代码如下: INSERT INTO ...
### Oracle记录被另一个用户锁定的解决办法 在Oracle数据库中,当多个用户尝试同时更新同一数据记录时,可能会出现锁定冲突的问题。这种情况下,如果一个用户的事务已经锁定了某些记录,而其他用户试图修改这些记录...
标题中的“matlab开发-另一个基于规则的udokusolver”表明这是一个使用MATLAB编程语言创建的项目,专注于解决数独游戏。数独是一种逻辑解谜游戏,玩家需要填充一个9x9的网格,使得每行、每列以及每个3x3的小宫格内都...
分区(Region Splitting)是HBase表设计的另一个关键点。HBase表在底层被切分为多个区域(Region),每个区域包含了表的一部分行键范围。当一个区域的数据量超过一定的阈值时,它会自动分裂成两个较小的区域,这个...
如果某一行在其中一个表中有记录,但在另一个表中没有匹配记录,则该行不会出现在最终的结果集中。 - **左连接(LEFT JOIN)**:与内连接不同,左连接会返回左表(第一个表)的所有记录,即使右表(第二个表)中...
3. 细表GridView配置:创建另一个GridView控件,用于显示选定主表项的详细信息。通常,这个GridView的Visible属性设置为False,直到用户选择主表中的某一行。设置其DataSourceID为一个能够获取单条详细信息的数据源...
如果某个表中的某行与另一个表中没有匹配,则该行不会出现在结果集中。 #### 示例 假设我们有两个表:`user_info` 和 `dev_info`。其中 `user_info` 表包含用户信息,如用户名 (`user_name`) 和用户ID (`user_id`)...
这种技术通常用于显示两个相关联的数据表,其中一个是主表,另一个是从表。主表通常包含一组关键数据,用户选择一行后,从表会根据所选主表的数据动态加载相关的详细信息,而这一切都是在不刷新整个页面的情况下完成...
6. 面向对象编程:继承是面向对象的一个关键特性,允许一个类(子类)继承另一个类(父类)的属性和操作,实现代码重用。 7. 数据库模型:层次型、网状型和关系型数据库的主要区别在于数据之间的联系方式。关系型...
2. **OnGetItem()**:这个函数接收两个参数,一个是行号,另一个是包含信息结构的对象,如LVITEM。在这个函数中,你需要根据行号获取对应数据,并填充LVITEM结构。例如,设置iSubItem表示的列的文本、图像索引等。 ...
在SQL中,可以在一个查询语句中嵌套另一个查询语句,称为子查询。子查询可以作为一个表达式被外部查询所引用。 **示例2**:查找特定子单对应的订单号(子单号=20202) ```sql SELECT b.order_number AS 订单号, b....