หากคุณคุ้นเคยกับ ASP แบบคลาสสิก คุณจะคุ้นเคยกับไวยากรณ์การเชื่อมโยงข้อมูลใน ASP.NET แม้ว่าฟังก์ชันจะไม่เหมือนกันก็ตาม การแสดงออกของการเชื่อมโยงข้อมูลคือโค้ดระหว่าง <%# และ %> ในไฟล์ ASPX ช่วยให้ข้อมูลถูกผูกไว้กับคอนโทรลเลอร์ เช่นเดียวกับคุณสมบัติ นิพจน์ และผลลัพธ์ของการเรียกเมธอดบนเพจเพื่อเชื่อมโยงกับคอนโทรลเลอร์ แม้ว่าคุณลักษณะนี้จะใช้งานง่าย แต่บางครั้งก็ทำให้เกิดความสับสนในการพิจารณาว่าเนื้อหาใดที่ได้รับอนุญาตให้ผูกและไม่ว่าจะถูกใช้หรือไม่
องค์ประกอบการผูกข้อมูล
เมื่อมีการเรียกเมธอด DataBind ใน ASP.NET ของเพจ นิพจน์การผูกข้อมูลจะเชื่อมโยงกับคุณสมบัติ คุณสมบัติการควบคุมเซิร์ฟเวอร์ และแหล่งข้อมูลใน ASP.NET คุณสามารถวางนิพจน์ที่ด้านตัวเลขของคู่ค่าแอตทริบิวต์/ค่าเมื่อเปิดแท็บที่ควบคุมโดยเซิร์ฟเวอร์หรือที่ใดก็ได้บนเพจ นิพจน์การเชื่อมโยงข้อมูลทั้งหมด ไม่ว่าจะวางไว้ที่ใด จะถูกล้อมด้วยอักขระ <%# และ %>
เมื่อใช้ตัวควบคุมข้อมูล (Repeater, DataGrid ฯลฯ) พารามิเตอร์ของนิพจน์มักจะเป็นชื่อคอลัมน์ของแหล่งข้อมูล ไม่ว่านิพจน์ที่ถูกต้องใดๆ จะสามารถใช้ได้ตราบเท่าที่ส่งคืนค่า ในทำนองเดียวกัน สามารถใช้ไวยากรณ์เดียวกันสำหรับตัวควบคุมรายการภายนอกได้ รวมถึงการแสดงค่าบนเพจหรือการประกอบคุณสมบัติของคอนโทรลเลอร์
Container.DataItem เป็นนามแฝงรันไทม์สำหรับ DataItem สำหรับรายการใดรายการหนึ่ง โดยจะจับคู่รายการเดียวจากแหล่งข้อมูล เช่น แถวจากการสืบค้นข้อมูล หรือองค์ประกอบเดียวจากเวกเตอร์ ชนิดข้อมูลจริงของ DataItem จะถูกกำหนดโดยแหล่งข้อมูล ดังนั้น เมื่อต้องจัดการกับเวกเตอร์จำนวนเต็ม DataItem จึงเป็นจำนวนเต็มด้วย
รายการต่อไปนี้ตรวจสอบสถานการณ์ทางไวยากรณ์ของ VB.NET บางส่วน:
<%# Container.DataItem %>--ส่งคืนเวกเตอร์สตริง
<%# Container.DataItem("expression") %>--ส่งคืนรายการเฉพาะในฟิลด์คอนเทนเนอร์ DataView
< %# Container.DataItem.PropertyName %>--ส่งคืนค่าคุณสมบัติของสตริงเฉพาะในแหล่งข้อมูล
<%# CStr(Container.DataItem.PropertyName) %>--ส่งคืนค่าคุณสมบัติและแปลงเป็นรูปแบบสตริง
เมื่อ การใช้ C# ไวยากรณ์จะแตกต่างกันเล็กน้อย รายการต่อไปนี้ประกอบด้วยรหัส C# ที่สอดคล้องกับรายการด้านบน โปรดทราบว่าไวยากรณ์พื้นฐานจะเหมือนกัน แต่มีการเปลี่ยนแปลงในการแปลงค่าแอตทริบิวต์และประเภทข้อมูลที่ส่งคืน
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container. DataItem).PropertyName.ToString() %>
ไวยากรณ์มีความสอดคล้องกันเมื่อดำเนินการกับคุณสมบัติและวิธีการของเพจ ตราบใดที่ค่าสตริงถูกส่งกลับ ไวยากรณ์จะเหมือนกันทุกประการ รายการต่อไปนี้เป็นตัวอย่าง:
<%# propertyName %>--ส่งคืนค่าคุณสมบัติระดับเพจ
<asp:ListBox id="lstValues" datasource='<%# propertyName %>' runat="server">-- ส่งกลับค่าเดียวกับค่าคุณสมบัติระดับเพจ (เวกเตอร์ ชุดอ็อบเจ็กต์ ฯลฯ) ที่ผูกไว้กับตัวควบคุมข้อมูล
<%# (objectName.PropertyName) %>--แสดงค่าคุณสมบัติอ็อบเจ็กต์ระดับเพจ
<%# MethodName() %>--วิธีการแสดงหน้าคืนค่า
ใช้ไวยากรณ์ต่อไปนี้เพื่อใช้ค่าเดียวบนหน้า (ค่าที่ส่งคืนโดยคุณสมบัติและวิธีการ ฯลฯ)
<%= ค่า %>
รหัส C# ในรายการ A แสดงข้อมูล การเชื่อมโยงในรูปแบบเว็บ ASP.NET โดยจะเลือกชื่อพนักงานและหมายเลขโทรศัพท์จากตารางพนักงาน SQL Sever Northwind ค่าแบบสอบถามจะแสดงผ่านตัวควบคุม ASP.NET Repeater ค่าคอลัมน์จะถูกแทรกผ่านการผูกข้อมูล ชื่อแบบฟอร์มของตารางถูกประกอบผ่านการเรียกเมธอด นอกจากนี้ คุณสมบัติ ItemIndex ของ Dataitem ยังใช้เพื่อแสดงจำนวนแถวอีกด้วย คุณสมบัติ ItemIndex เริ่มต้นที่ 0 และเพิ่มขึ้น 1 ระหว่างจอแสดงผล
รายการ B มีโค้ด VB.NET ที่เทียบเท่ากัน ข้อแตกต่างที่สำคัญคือ VB.NET ใช้วงเล็บและ C# ใช้วงเล็บเหลี่ยม และการแคสต์แถวนั้นไม่จำเป็นใน VB.NET
การใช้ Contain.DataItem ค่อนข้างน่าเบื่อ เนื่องจากคุณต้องใส่ใจกับชนิดข้อมูลและการแปลงชนิดข้อมูลตลอดเวลา Microsoft มีคลาส DataBinder ซึ่งช่วยให้การพัฒนาง่ายขึ้นอีก
การใช้
คลาส DataBinder DataBinder ได้รับการอธิบายโดยละเอียดในเอกสารประกอบของ Microsoft (MSDN) วิธีการนี้ช่วยให้ผู้ออกแบบ RAD สามารถสร้างไวยากรณ์การเชื่อมโยงข้อมูลที่แยกวิเคราะห์ได้อย่างง่ายดาย วิธีนี้สามารถใช้ในการประกาศเพจเว็บฟอร์มเพื่อทำให้การแมปจากประเภทหนึ่งไปยังอีกประเภทหนึ่งง่ายขึ้น
เมื่อใช้ค่าข้อมูลในหน้า ASP.NET คุณสามารถใช้วิธี Eval ของคลาส DataBinder เพื่อให้ .NET ทำหน้าที่ยกของหนักได้ เมธอด Eval ยอมรับออบเจ็กต์ Container.DataItem ที่ถูกแทนที่ก่อนหน้านี้ โดยจะคำนวณข้อมูลโดยละเอียดสำหรับแต่ละฟิลด์ที่ระบุในนิพจน์และแสดงข้อมูลเหล่านั้น ไวยากรณ์เป็นดังนี้:
DataBinder.Eval(Container.DataItem, "field name", "Optional formatting")
เมื่อใช้ไวยากรณ์นี้ คุณสามารถเขียนตัวอย่างแรกใหม่ได้โดยใช้ DataBinder.Eval ดูรายการ C สำหรับโค้ด C# รายการ D มีรหัสเทียบเท่า VB.NET
DataBinder.Eval มีประสิทธิภาพมากในการผลักดันงานไปยังระบบ แต่ยังต้องระวังด้วยว่าค่าใช้จ่ายด้านเวลาและทรัพยากรของระบบในการค้นหาองค์ประกอบและการกำหนดวัตถุ/ประเภทข้อมูลนั้นมีสูง
การผูกข้อมูลแบบ Rich option
ทำให้การใส่ข้อมูลลงในเพจ ASP.NET ค่อนข้างง่าย มีตัวเลือกการผูกข้อมูลที่แตกต่างกันมากมายให้เลือก ได้แก่ การผูกข้อมูลกับคอนโทรลเลอร์และการกำหนดวิธีแสดงข้อมูล หรือการเลือกผูกข้อมูลกับคอนโทรลเลอร์ที่ประกาศบนเพจ ASP.NET ท้ายที่สุดแล้วมันขึ้นอยู่กับความชอบของคุณ แต่การมีตัวเลือกมากมายก็เป็นสิ่งที่ดีในที่สุด
Tony Patton เริ่มต้นอาชีพของเขาในฐานะนักพัฒนาซอฟต์แวร์และได้รับการรับรองใน Java, VB, Lotus และ XML