การควบคุมที่แตกต่างกันมากมายให้เลือก! แนวทางปฏิบัติที่ดีที่สุดในการพิจารณาว่าจะใช้การควบคุมใดในการแสดงข้อมูลใน ASP.NET คืออะไร
การควบคุมที่แตกต่างกันมากมายให้เลือก! แนวทางปฏิบัติที่ดีที่สุดในการพิจารณาว่าจะใช้การควบคุมใดในการแสดงข้อมูลใน ASP.NET คืออะไร
คำตอบ:
มันเกี่ยวกับสิ่งที่คุณพยายามจะบรรลุ
Gridview - มีข้อ จำกัด ในการออกแบบทำงานเหมือนตาราง html เพิ่มเติมในฟังก์ชันที่สร้างขึ้นเช่นแก้ไข / อัปเดตหน้าจัดเรียง ค่าใช้จ่ายมากมาย
DataGrid - Gridview เวอร์ชันเก่า Gridview คือ super datagrid
Datalist - Gridview เวอร์ชันที่ปรับแต่งได้มากขึ้น นอกจากนี้ยังมีค่าใช้จ่ายบางส่วน ทำงานด้วยตนเองมากขึ้นเนื่องจากคุณต้องออกแบบเอง
ListView - Datalist ใหม่ :) เกือบจะเป็นไฮบริดของ datalist และ gridview ที่คุณสามารถใช้เพจจิ้งและสร้างใน Gridview เหมือนกับฟังก์ชันการทำงาน แต่มีอิสระในการออกแบบ หนึ่งในตัวควบคุมใหม่ในตระกูลนี้
Repeater - น้ำหนักเบามาก ไม่มีฟังก์ชันในตัวเช่นส่วนหัวส่วนท้าย มีค่าใช้จ่ายน้อยที่สุด
ทุกคนตีมัน: ขึ้นอยู่กับ
ตอนนี้สำหรับคำแนะนำเฉพาะบางอย่าง (ขยายจากคำตอบที่ยอดเยี่ยมของ WebDude ด้านบน) ...
การออกแบบของคุณเข้ากับสเปรดชีตธรรมชาติหรือมุมมองตารางของข้อมูลหรือไม่ GridView
คุณจำเป็นต้องแสดงรายการหรือมุมมองข้อมูลที่จัดรูปแบบอื่น ๆ โดยอาจมีส่วนหัวและส่วนท้ายและอาจมีการควบคุมและ / หรือการจัดรูปแบบเฉพาะสำหรับแต่ละระเบียนข้อมูลหรือไม่ (เช่นลิงก์ที่กำหนดเองอาจเป็น LinkButtons หรือตัวควบคุมการแก้ไขเฉพาะ) การแสดงผลนี้ไม่พอดีกับมุมมองสเปรดชีตหรือตารางโดยเฉพาะหรือไม่? ListView
หากคุณมีคุณสมบัติตามเกณฑ์ทั้งหมดของ ListView แต่คุณตามธรรมชาติจะพอดีในตารางคุณอาจพิจารณาDataList
ฉันไปหาRepeaterเมื่อฉันต้องการข้อมูลพื้นฐานที่วนซ้ำด้วยบิตการออกแบบที่กำหนดเองไม่มีส่วนหัวไม่มีส่วนท้ายดีและสะอาด
การประกาศโค้ดตัวอย่างต่อไปนี้เป็นไปได้สำหรับทั้ง 3 (ListView, DataList, Repeater)
<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%> </ItemTemplate>
<asp:ListView>
ในรายการต่อไปนี้คุณสามารถดูเทมเพลตและตัวเลือกที่ใช้ได้สำหรับแต่ละเทมเพลตและดูความแตกต่างด้วยตัวคุณเอง
ListView (สังเกตการแก้ไขกลุ่มแทรกเค้าโครง)
DataList (สังเกตคู่สไตล์)
ทบทวน
CompositeDataBoundControl :
ดูลำดับชั้นของคลาสต่อไปนี้ (และตัวควบคุมที่เกี่ยวข้อง)
การควบคุมเหล่านี้โฮสต์ตัวควบคุม asp.net อื่น ๆ ในเทมเพลตเพื่อแสดงข้อมูลที่ถูกผูกไว้ให้กับผู้ใช้
การควบคุม ListView
ตัวควบคุม ListView ยังใช้เทมเพลตสำหรับการแสดงข้อมูล อย่างไรก็ตามสนับสนุนเทมเพลตเพิ่มเติมจำนวนมากที่ช่วยให้สามารถใช้งานได้มากขึ้นเมื่อทำงานกับข้อมูลของคุณ แม่แบบเหล่านี้รวมถึงLayoutTemplate, GroupTemplate, ItemSeparatorTemplate
ตัวควบคุม ListView ( ไม่เหมือนกับ DataList และ Repeater ) ยังสนับสนุนความสามารถในการแก้ไขแทรกและลบข้อมูลโดยปริยายโดยใช้ตัวควบคุมแหล่งข้อมูล คุณสามารถกำหนดแต่ละเทมเพลตสำหรับแต่ละสถานการณ์เหล่านี้
การควบคุม DataList
ตัวควบคุม DataList ทำงานเหมือนกับตัวควบคุมRepeater ข้อมูลซ้ำสำหรับแต่ละแถวในชุดข้อมูลของคุณและจะแสดงข้อมูลนี้ตามเทมเพลตที่คุณกำหนด อย่างไรก็ตามมันวางข้อมูลที่กำหนดไว้ในเทมเพลตภายในโครงสร้าง HTML ต่างๆ ซึ่งรวมถึงตัวเลือกสำหรับเค้าโครงแนวนอนหรือแนวตั้งและยังช่วยให้คุณกำหนดวิธีการทำซ้ำข้อมูลเป็นโฟลว์หรือเค้าโครงตาราง
ตัวควบคุม DataList ไม่ใช้ตัวควบคุมแหล่งข้อมูลโดยอัตโนมัติเพื่อแก้ไขข้อมูล แต่จะจัดเตรียมเหตุการณ์คำสั่งซึ่งคุณสามารถเขียนโค้ดของคุณเองสำหรับสถานการณ์เหล่านี้ได้ ในการเปิดใช้งานเหตุการณ์เหล่านี้คุณเพิ่มปุ่มควบคุมลงในเทมเพลตและตั้งค่าคุณสมบัติ CommandName ของปุ่มเพื่อแก้ไขลบอัปเดตหรือยกเลิกคำสำคัญ จากนั้นเหตุการณ์ที่เหมาะสมจะถูกยกขึ้นโดยตัวควบคุม DataList
การควบคุม Repeater
ตัวควบคุม Repeater ยังใช้เทมเพลตเพื่อกำหนดการเชื่อมโยงแบบกำหนดเอง อย่างไรก็ตามจะไม่แสดงข้อมูลเป็นแต่ละระเบียน แต่จะทำซ้ำแถวข้อมูลตามที่คุณระบุในเทมเพลตของคุณ วิธีนี้ช่วยให้คุณสามารถสร้างข้อมูลแถวเดียวและทำซ้ำในหน้าของคุณ
ตัวควบคุม Repeater เป็นเทมเพลตแบบอ่านอย่างเดียว นั่นคือรองรับเฉพาะ ItemTemplate ไม่สนับสนุนการแก้ไขแทรกและลบโดยปริยาย คุณควรพิจารณาการควบคุมอื่น ๆ อย่างใดอย่างหนึ่งหากคุณต้องการฟังก์ชันนี้มิฉะนั้นคุณจะต้องเขียนโค้ดนี้ด้วยตัวคุณเองสำหรับการควบคุม Repeater
คำอธิบายข้างต้นมาจากMCTS 70-515 สอบการใช้งานเว็บพัฒนากับ Microsoft.NET 4 Frameworkหนังสือ
DataGrid ไม่ได้กล่าวถึงในหนังสือเล่มนี้และถูกแทนที่ด้วย GridViews ยอดนิยมและตอบรับอย่างดีจากผู้ใช้รายอื่น
แน่นอน! ผมเคย blogged กับความแตกต่างระหว่างข้อมูลเครื่องมือ ASP.NET 4.0 โดยทั่วไปแล้ว gridview เป็นวิธีที่มีประสิทธิภาพที่สุดในการนำเสนอข้อมูลแบบตารางในขณะที่การควบคุม ListView ใช้สำหรับการแสดงข้อมูลซ้ำที่ซับซ้อนมากขึ้น หากฉันให้คำแนะนำแก่มือใหม่ ASP.NET ฉันจะบอกให้พวกเขาเรียนรู้ gridview จากภายในและไม่สนใจการควบคุมอื่น ๆ ที่จะเริ่มต้นด้วย
ทั้งหมดนี้ขึ้นอยู่กับวิธีที่คุณต้องการจัดวางข้อมูลของคุณ
หากคุณต้องการควบคุมเค้าโครง (เช่นตารางเทียบกับ CSS กับอะไรก็ตาม) เมื่อใช้ Repeater หรือ ListView ระหว่างทั้งสองรายการ ListView ช่วยให้คุณมีกิจกรรมและคำสั่งในตัวมากมายสำหรับการแก้ไขเลือกแทรก นอกจากนี้ฟังก์ชันการเพจและการจัดกลุ่ม Repeater นั้นง่ายมากโดยจะทำโครงร่างซ้ำกับข้อมูล เนื่องจากคุณกำลังสร้างเค้าโครงด้วยมือ Listview และ Repeater จึงต้องใช้รหัสเพิ่มเติม
GridView เป็น DataGrid ที่อัปเดตดังนั้นจึงแทบไม่มีเหตุผลใด ๆ ที่จะใช้ DataGrid GridView ทำงานได้ดีจริงๆเมื่อเชื่อมต่อกับแหล่งข้อมูล ASP.NET มาตรฐาน แต่ จำกัด ให้คุณอยู่ในรูปแบบตารางที่มีกฎการจัดวางจำนวนมาก GridView ต้องการโค้ดน้อยลงเนื่องจากคุณใช้เลย์เอาต์ในตัว