2012-12-11 83 views
8

Tôi muốn có một hàng cụ thể trên một DataTable asp.net và di chuyển nó thành cột đầu tiên trên cơ sở DataTable này với giá trị cột column1. DataTable dt1 của tôi được phổ biến thông qua một truy vấn DB và giá trị để tìm kiếm là thông qua một truy vấn từ một DB vì vậy tôi không biết giá trị để tìm kiếm đồng thời dt1 select.Cách di chuyển hàng DataTable đến vị trí đầu tiên của DataTable

// I use this variable to search into 
// DataTable 
string valueToSearch = "some value"; 

Vì vậy, tôi cần phải tìm kiếm các giá trị some value vào DataTable của tôi trong cột column1. và sau đó di chuyển toàn bộ hàng đến vị trí đầu tiên.

Cảm ơn bạn.

+0

thế nào là dân cư DataTable này? –

+0

@WonkotheSane thông qua truy vấn DataBase. Hình tôi có 'column1' với các giá trị chuỗi. – anmarti

Trả lời

22

Chúng ta phải sao chép dữ liệu hàng trước:

  DataRow[] dr = dtable.Select("column1 ='" + valueToSearch +"'"); 
      DataRow newRow = dtable.NewRow(); 
      // We "clone" the row 
      newRow.ItemArray = dr[0].ItemArray; 
      // We remove the old and insert the new 
      ds.Tables[0].Rows.Remove(dr[0]); 
      ds.Tables[0].Rows.InsertAt(newRow, 0); 
+0

giải pháp tuyệt vời –

0

Nếu cột chỉ có một kỷ lục đối với các giá trị đã tìm kiếm hơn thử này

DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'"); 
myDataTable.Rows.InsertAt(dr[0], 0); 
+0

tôi không thể chèn nó bởi vì nó đã thuộc về DataTable này, vì vậy tôi cần phải loại bỏ prevously. – anmarti

+1

Hãy xem điều này. bạn không cần phải xóa hàng và chèn nó một lần nữa nếu nó hoạt động. http://www.codeproject.com/Tips/312545/A-method-to-move-rows-within-a-DataTable –

0

Bạn sẽ phải kiểm tra việc thực hiện về vấn đề này, nhưng có một cách để làm điều này là trong truy vấn chính nó. Nhận các hàng mà bạn muốn ở trên cùng đầu tiên và kết hợp các hàng đó với phần còn lại của các hàng.

Vì tôi không biết gì về cơ sở dữ liệu của bạn, đây là một cách tổng quát để làm điều này:

SELECT Column1, Column2, Column3 
FROM MyTable 
WHERE Column1 = 'some value' 

UNION 

SELECT Column1, Column2, Column3 
FROM MyTable 
WHERE Column1 <> 'some value' 
+0

Tôi không thể làm điều đó bởi vì các nguồn của DataTable và giá trị để tìm kiếm khác nhau, vì vậy tôi không biết giá trị để tìm kiếm tại thời điểm truy vấn. – anmarti

+0

Trong trường hợp đó, tôi nghĩ bạn nên chỉnh sửa câu hỏi của mình để đưa vào chi tiết hơn. Làm thế nào là dân cư DataTable (bao gồm các ràng buộc), làm thế nào là 'một số giá trị' nhập như một bộ lọc, vv Ngay bây giờ, tất cả chúng ta đoán ở thiết kế của bạn. –

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