คุณสมบัติ DataSourceMode ของตัวควบคุม SqlDataSource จะกำหนดวิธีการรักษาข้อมูลที่แยกออกมา
ค่าเริ่มต้นของคุณสมบัติ DataSourceMode คือ DataSet ซึ่งหมายความว่าชุดผลลัพธ์ที่แยกจากฐานข้อมูลจะถูกจัดเก็บไว้ในวัตถุ DataSet ในหน่วยความจำเซิร์ฟเวอร์ ถ้าคุณใช้ SqlDataSource เป็นแหล่งข้อมูลสำหรับตัวควบคุม เช่น GridView และคุณต้องการเรียงลำดับ ในตัวควบคุม GridView สำหรับการประมวลผล เช่น การกรองและการเพจ คุณสมบัติ DataSourceMode ของ SqlDataSource จะต้องตั้งค่าเป็น DataSet
อย่างไรก็ตาม ในทางกลับกัน หากข้อมูลที่แยกโดย SqlDataSource ใช้เป็นตัวเลือกสำหรับการควบคุม เช่น DropDownList และ ListBox เท่านั้น โดยไม่มีการเรียงลำดับ การกรอง การเพจ ฯลฯ ดังนั้นคุณสมบัติ DataSourceMode ของ SqlDataSource ควรตั้งค่าเป็น DataReader ดังนั้น ลดการใช้ทรัพยากร ท้ายที่สุดแล้ว การใช้ DataSet ในเวลานี้เป็นเพียงการฆ่าไก่ด้วยมีดเท่านั้น
เมื่อคุณตั้งค่าคุณสมบัติ DataSourceMode เป็น DataReader ข้อมูลจะถูกดึงผ่านวัตถุ IDataReader (นั่นคือ ตัวชี้ข้อมูลแบบไปข้างหน้าและแบบอ่านอย่างเดียว) และชุดผลลัพธ์จะไม่ถูกเก็บไว้ในหน่วยความจำของเซิร์ฟเวอร์
หากคุณมีความเข้าใจที่ชัดเจนเกี่ยวกับคุณลักษณะและความแตกต่างระหว่างโมเดลชุดข้อมูลและโมเดลคำสั่งข้อมูล ฉันเชื่อว่าคุณควรจะรู้ว่าเมื่อใดควรใช้ DataSet และเมื่อใดควรใช้ DataReader
http://www.cnblogs.com/liminzhang/archive/2006/12/18/595332.html