2013-01-11 53 views
5

Tôi đã cố gắng tìm câu trả lời cho câu hỏi này ngay bây giờ trong nhiều ngày và tôi thấy khó tin rằng điều này không thể thực hiện được.Truy cập dữ liệu được truy xuất

Tôi muốn truy cập vào DataSet/DataTable được xây dựng khi phương pháp SqlDataSource.Select được gọi tự động theo thời gian chạy của ASP.NET khi trang được xây dựng.

Tôi biết tôi có thể chạy nó trong mã phía sau nhưng điều này làm cho một chuyến đi thứ hai đến cơ sở dữ liệu và tôi thực sự muốn tránh điều này. Mỗi ví dụ tôi đã đi qua cho bạn biết để thực hiện các Chọn phương pháp trong mã phía sau.

Có cách nào để truy cập dữ liệu đã được truy lục không?

+1

Bạn biết đấy, tôi đã cố gắng để con số đó ra một lần, năm trước, và quyết định đó chỉ là dễ dàng hơn để ràng buộc mã trong mã-đằng sau vì vậy tôi đã truy cập dễ dàng hơn vào tập dữ liệu. Nếu ai đó biết làm thế nào để làm điều này, nó có thể thay đổi cách tôi tiếp cận situaitons tương tự đi về phía trước. 1 cho yêu cầu. – David

+2

Tôi sẽ không sử dụng điều khiển đó cả. Thay vì sử dụng ADO.NET (f.e. 'DataAdapter.Fill (DataTable)') hoặc một trình ánh xạ ORM thực như khung NHibernate hoặc Entity. Dù sao, nó không rõ ràng lý do tại sao bạn nghĩ rằng "mã phía sau làm cho một chuyến đi thứ hai đến cơ sở dữ liệu". Sử dụng 'if (! IsPostBack)' sau đó. –

+0

Không thực sự có sự lựa chọn trên điều khiển. Tôi cần phải thực hiện một thay đổi cho một trang hiện có và không có sự sang trọng của việc viết lại nó. Khi bạn gọi phương thức Select trên SqlDataSource, nó thực hiện một chuyến đi đến cơ sở dữ liệu theo Microsoft http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx – dscarr

Trả lời

0

Bạn có thể thử với mã này - dựa trên phương pháp ToTable

DataView view = (DataView)SqlDataSource.Select(...); 
DataTable table = view.ToTable(); 

Link: http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx

+0

là mã tôi đang nói đến. Thực thi phương thức Select trên SqlDataSource lấy dữ liệu từ cơ sở dữ liệu. (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx) Tôi đã sử dụng nhiều lần nhưng trong trường hợp này tôi muốn tránh chuyến đi thứ hai đó . – dscarr

+0

bạn có thể giải thích –

+0

"Tránh chuyến đi thứ hai" ngụ ý rằng bạn đã có dữ liệu ở đâu đó. Trong trường hợp đó, bạn có thể chặn cuộc gọi đến 'OnSelect()' trong phần trước bằng cách cung cấp một 'DataSource' giả, và thay thế tập dữ liệu của riêng bạn (được lưu trong bộ nhớ cache) cho dữ liệu kết quả không? –

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