تدعم عناصر التحكم في البيانات عدة طرق للتعامل مع القيم الخالية أو البيانات المفقودة. على سبيل المثال، تدعم كل من GridView وFormView وDetailsView خصائص EmptyDataText أو EmptyDataTemplate عندما لا يقوم مصدر البيانات بإرجاع صفوف البيانات، يمكنك استخدام هذه الخصائص لتحديد المحتوى المعروض بواسطة عنصر التحكم. نحتاج فقط إلى تعيين واحد من EmptyDataText وEmptyDataTemplate (إذا تم تعيين كليهما، فسيتم تحميل EmptyDataTemplate بشكل زائد). يمكنك أيضًا تحديد خاصية ConvertEmptyStringToNull في حقل منضم (ونوع حقل مشتق)، أو حقل قالب، أو كائن معلمة مصدر البيانات للإشارة إلى أنه يجب تحويل قيمة String.Empty من العميل إلى قيمة فارغة قبل عملية مصدر البيانات المقترنة يسمى .
يدعم ObjectDataSource أيضًا خاصية ConvertNullToDbNull. عندما تتطلب الطريقة ذات الصلة استخدام DbNull لاستبدال القيمة الخالية (تحتوي فئة TableAdapter في مجموعة بيانات Visual Studio على هذا المطلب)، يمكننا تعيين هذه الخاصية على true. يمكنك أيضًا تحديد خاصية NullDisplayText للحقل المنضم (ونوع الحقل المشتق)، والتي تحدد المحتوى الذي سيتم عرضه عندما تكون قيمة الحقل الذي يتم إرجاعه بواسطة مصدر البيانات فارغة. إذا لم تتغير القيمة في وضع التحرير، فسيتم إرجاع القيمة إلى مصدر بيانات الواجهة الخلفية كقيمة فارغة أثناء عملية التحديث. وأخيرًا، يمكنك أيضًا تحديد سمة DefaultValue لمعلمة مصدر البيانات إذا كانت قيمة المعلمة التي تم تمريرها فارغة، فستقوم هذه السمة بتعيين قيمة افتراضية للمعلمة. هذه الخصائص هي "سلسلة تفاعلية"، على سبيل المثال، إذا تم تعيين ConvertEmptyStringToNull وDefaultValue، فسيتم تحويل قيمة String.Empty أولاً إلى قيمة خالية، ثم تحويلها إلى القيمة الافتراضية.
<asp:تفاصيل العرض……>
<الحقول>
<asp:BoundField DataField = "الهاتف" HeaderText = "الهاتف" NullDisplayText = "غير مدرج" SortExpression = "الهاتف" />
<asp:BoundField DataField = "فاكس" HeaderText = "فاكس" NullDisplayText = "غير مدرج" SortExpression = "فاكس" />
</الحقول>
<EmptyDataTemplate>
<asp:معرف الصورة = "Image1" runat = "server" ImageUrl = "~/Images/warning.gif" /> لا توجد سجلات لعرضها
</EmptyDataTemplate>
</asp:عرض التفاصيل>
<asp:SqlDataSource……>
<تحديث المعلمات>
<asp: اسم المعلمة = "ContactTitle" النوع = "سلسلة" DefaultValue = "المالك" ConvertEmptyStringToNull = "صحيح" />
<asp: اسم المعلمة = "المنطقة" النوع = "سلسلة" ConvertEmptyStringToNull = "صحيح" />
<asp: اسم المعلمة = "الهاتف" النوع = "سلسلة" ConvertEmptyStringToNull = "صحيح" />
<asp: اسم المعلمة = "فاكس" النوع = "سلسلة" ConvertEmptyStringToNull = "صحيح" />
<asp: اسم المعلمة = "معرف العميل" النوع = "سلسلة" />
</معلمات التحديث>
…
</asp:SqlDataSource>
يمكنك استخدام هذه الخصائص للتعامل مع القيم الخالية لتنفيذ مرشح القائمة المنسدلة الذي يعرض في البداية جميع القيم من مصدر البيانات حتى يتم تحديد قيمة في عامل التصفية. نقوم بتنفيذه على النحو التالي: قم أولاً بإضافة عنصر بيانات بقيمة سلسلة فارغة إلى القائمة المنسدلة، وقم بتعيين خاصية ConvertEmptyStringToNull الخاصة بمعلمة التحكم (معلمة التحكم) المرتبطة بالقائمة المنسدلة في مصدر البيانات.
ثم في SelectCommand بمصدر البيانات، يمكنك إرجاع جميع القيم (غير المصفاة) عن طريق الكشف عن القيم الخالية. يوضح المثال التالي هذه التقنية باستخدام أمر SQL بسيط، ولكن يمكنك أيضًا إجراء التحقق من القيمة الخالية في تنفيذ الإجراء المخزن. يرجى ملاحظة استخدام خاصية AppendDataBoundItems في القائمة المنسدلة، والتي تسمح بإضافة القيم من مصدر بيانات القائمة المنسدلة إلى عناصر البيانات "ALL" (يتم إضافة هذا العنصر بشكل ثابت بواسطتنا). في الوقت نفسه، يجب أن نلاحظ أنه بشكل افتراضي، إذا كانت إحدى قيم المعلمات ذات الصلة التي تم تمريرها إلى SelectCommand فارغة، فلن يقوم SqlDataSource بإجراء عملية التحديد. لفرض تنفيذ عملية التحديد عند تمرير قيمة فارغة، يمكنك تعيين الخاصية CancelSelectOnNullParameter الخاصة بها إلى false.
<asp:DropDownList AppendDataBoundItems = "True" AutoPostBack = "True" DataSourceID = "SqlDataSource2" DataTextField = "state" DataValueField = "state" ID = "DropDownList1" runat = "الخادم">
<asp:ListItem Value = "">الكل</asp:ListItem>
</asp:القائمة المنسدلة>
<asp:SqlDataSource ConnectionString = "<%$ ConnectionStrings: Pubs %>" ID = "SqlDataSource2" runat = "server" SelectCommand = "حدد [حالة] مميزة من [المؤلفين]">
</asp:SqlDataSource>
<asp:SqlDataSource ConnectionString = "<%$ ConnectionStrings: Pubs %>" ID = "SqlDataSource1" runat = "server" SelectCommand = "SELECT au_id، au_lname، au_fname، الحالة من المؤلفين WHEREstate = IsNull( @state,state)" CancelSelectOnNullParameter="False">
<حدد المعلمات>
<asp:ControlParameter ControlID = "DropDownList1" الاسم = "state" PropertyName = "SelectedValue" النوع = "سلسلة" />
</حدد المعلمات>
</asp:SqlDataSource>