2012-02-20 26 views
17

Tôi gặp sự cố với trang web asp.net của mình, tôi đang cố gắng sao chép dữ liệu từ một dữ liệu đến một dữ liệu khác, nhưng mỗi lần tôi cố gắng thực hiện việc này, tôi nhận được lỗi:Hàng này đã thuộc về một bảng khác

This row already belongs to another table. 

Trả lời

17

Theo các tiểu bang lỗi, một trường hợp DataRow được gắn liền với việc sở hữu nó DataTable và không thể được thêm vào bảng khác.

Thay vào đó, hãy sử dụng ImportRow() method để tạo bản sao thực của hàng.

+1

Ok, Microsoft ... bạn nhận ra đó là trường hợp, tại sao không, thay vì ném một ngoại lệ tự mãn, bạn chạy ImportRow trong trường hợp đó cho chúng ta? * thở dài * – SeanKendle

+1

@SeanKendle: Không; có thêm đôi khi làm cho một bản sao của hàng không có dấu hiệu sẽ là một ý tưởng rất xấu. – SLaks

+0

Có trường hợp nào nói "thêm hàng" * không * có nghĩa là tạo một bản sao? Hoặc, nơi bạn thậm chí có thể sử dụng thêm hàng nếu nó đã là thành viên của một bảng khác? – SeanKendle

4

Ví dụ

Bạn cần phải tạo ra một mới với các giá trị từ dr đầu tiên. Một DataRow chỉ có thể thuộc về một đơn DataTable.

Bạn cũng có thể sử dụng thêm mà phải mất một mảng các giá trị:

myTable.Rows.Add(dr.ItemArray) 

Hoặc có lẽ thậm chí tốt hơn:

myTable.ImportRow(dr); 

Link

Các vấn đề liên quan