การควบคุมข้อมูลรองรับวิธีการต่างๆ ในการจัดการค่า Null หรือข้อมูลที่ขาดหายไป ตัวอย่างเช่น GridView, FormView และ DetailView ทั้งหมดรองรับคุณสมบัติ EmptyDataText หรือ EmptyDataTemplate เมื่อแหล่งข้อมูลไม่ส่งคืนแถวข้อมูล คุณสามารถใช้คุณสมบัติเหล่านี้เพื่อระบุเนื้อหาที่แสดงโดยตัวควบคุม เราจำเป็นต้องตั้งค่า EmptyDataText และ EmptyDataTemplate อย่างใดอย่างหนึ่งเท่านั้น (หากตั้งค่าทั้งสองค่า EmptyDataTemplate จะถูกโอเวอร์โหลด) คุณยังสามารถระบุคุณสมบัติ ConvertEmptyStringToNull บนฟิลด์ที่ถูกผูกไว้ (และชนิดฟิลด์ที่ได้รับ) ฟิลด์เทมเพลต หรือออบเจ็กต์พารามิเตอร์แหล่งข้อมูล เพื่อระบุว่าค่า String.Empty จากไคลเอนต์จะต้องถูกแปลงเป็นค่า null ก่อนการดำเนินการแหล่งข้อมูลที่เกี่ยวข้อง เรียกว่า
ObjectDataSource ยังรองรับคุณสมบัติ ConvertNullToDbNull เมื่อวิธีการที่เกี่ยวข้องจำเป็นต้องใช้ DbNull เพื่อแทนที่ค่า null (คลาส TableAdapter ในชุดข้อมูล Visual Studio มีข้อกำหนดนี้) เราสามารถตั้งค่าคุณสมบัตินี้ให้เป็นจริงได้ คุณยังสามารถระบุคุณสมบัติ NullDisplayText ของเขตข้อมูลที่ถูกผูกไว้ (และประเภทเขตข้อมูลที่ได้รับ) ซึ่งระบุเนื้อหาที่จะแสดงเมื่อค่าของเขตข้อมูลที่ส่งคืนโดยแหล่งข้อมูลเป็นค่าว่าง หากค่าไม่เปลี่ยนแปลงในโหมดแก้ไข ค่าจะถูกส่งกลับไปยังแหล่งข้อมูลส่วนหลังเป็นค่าว่างระหว่างการดำเนินการอัพเดต สุดท้าย คุณยังสามารถระบุแอตทริบิวต์ DefaultValue ของพารามิเตอร์แหล่งข้อมูลได้ หากค่าพารามิเตอร์ที่ส่งเข้ามาว่างเปล่า คุณลักษณะนี้จะกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ คุณสมบัติเหล่านี้เป็น "chain-reactive" ตัวอย่างเช่น หาก ConvertEmptyStringToNull และ DefaultValue ได้รับการตั้งค่าทั้งคู่ ค่า String.Empty จะถูกแปลงเป็น null ก่อน จากนั้นจึงแปลงเป็นค่าเริ่มต้น
<ฟิลด์>
<asp:BoundField DataField="โทรศัพท์" HeaderText="โทรศัพท์" NullDisplayText="ไม่อยู่ในรายการ" SortExpression="โทรศัพท์" />
<asp:BoundField DataField="Fax" HeaderText="Fax" NullDisplayText="ไม่อยู่ในรายการ" SortExpression="Fax" />
</สาขา>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/warning.gif" />ไม่มีบันทึกที่จะแสดง
</asp:รายละเอียดดู>
<อัปเดตพารามิเตอร์><
<asp:ชื่อพารามิเตอร์ = "ContactTitle" Type = "String" DefaultValue = "เจ้าของ" ConvertEmptyStringToNull = "true" />
<asp:ชื่อพารามิเตอร์ =ประเภทภูมิภาค = "สตริง" ConvertEmptyStringToNull = "จริง" />
<asp:ชื่อพารามิเตอร์ = "โทรศัพท์" Type = "String" ConvertEmptyStringToNull = "true" />
<asp:ชื่อพารามิเตอร์ = "แฟกซ์" Type = "String" ConvertEmptyStringToNull = "true" />
<asp:Parameter Name="CustomerID" Type="String" />
</อัปเดตพารามิเตอร์><
-
คุณสามารถใช้คุณสมบัติเหล่านี้เพื่อจัดการค่า Null เพื่อใช้ตัวกรองรายการแบบเลื่อนลงที่เริ่มแสดงค่าทั้งหมดจากแหล่งข้อมูลจนกว่าจะเลือกค่าในตัวกรอง เราใช้วิธีนี้: ขั้นแรกให้เพิ่มรายการข้อมูลที่มีค่าสตริงว่างลงในรายการดรอปดาวน์ และตั้งค่าคุณสมบัติ ConvertEmptyStringToNull ของ ControlParameter (พารามิเตอร์ควบคุม) ที่เกี่ยวข้องกับรายการดรอปดาวน์ในแหล่งข้อมูล
จากนั้นใน SelectCommand ของแหล่งข้อมูล คุณสามารถส่งคืนค่าทั้งหมด (ที่ไม่ได้กรอง) ได้โดยการตรวจจับค่า Null ตัวอย่างต่อไปนี้สาธิตเทคนิคนี้โดยใช้คำสั่ง SQL แบบธรรมดา แต่คุณยังสามารถทำการตรวจสอบค่าว่างในการใช้งานกระบวนงานที่เก็บไว้ได้อีกด้วย โปรดทราบการใช้คุณสมบัติ AppendDataBoundItems ของรายการแบบเลื่อนลง ซึ่งอนุญาตให้เพิ่มค่าจากแหล่งข้อมูลของรายการแบบเลื่อนลงลงในรายการข้อมูล "ทั้งหมด" (รายการนี้ถูกเพิ่มแบบคงที่โดยเรา) ในเวลาเดียวกัน เราควรทราบว่าโดยค่าเริ่มต้น หากค่าใดค่าหนึ่งของพารามิเตอร์ที่เกี่ยวข้องที่ส่งไปยัง SelectCommand ว่างเปล่า SqlDataSource จะไม่ดำเนินการเลือก หากต้องการบังคับให้การดำเนินการ Select ดำเนินการเมื่อมีการส่งผ่านค่า Null คุณสามารถตั้งค่าคุณสมบัติ CancelSelectOnNullParameter เป็น false ได้
<asp:ListItem Value=""">ทั้งหมด</asp:ListItem">
</asp:DropDownList><
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %">" ID="SqlDataSource2" runat="server" SelectCommand="SELECT DISTINCT [สถานะ] จาก [ผู้เขียน]">
</asp:SqlDataSource>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %">" ID="SqlDataSource1" runat="server" SelectCommand="SELECT au_id, au_lname, au_fname, สถานะจากผู้เขียน โดยที่ state = IsNull( @state, state)" CancelSelectOnNullParameter = "False" >
<เลือกพารามิเตอร์>
<asp:ControlParameter ControlID = "DropDownList1" Name = "สถานะ" PropertyName = "SelectedValue" Type = "String" />
</เลือกพารามิเตอร์><