ASP: QuerystringParameter ومعلمة سلسلة الاستعلام الفارغة
-
30-09-2019 - |
سؤال
أملكasp:GridView
عرض طلبات العميل باستخدام asp:SqlDataSource
. أريد قصر المعلومات المعروضة من قبل العميل:
View.aspx
يجب أن تعرض كل شيء ، View.aspx?client=1
يجب أن تعرض طلبات فقط من معرف العميل رقم 1.
لذلك أنا أستخدم <asp:QueryStringParameter Name="client" QueryStringField="client" />
للاستعلام "EXEC getRequests @client"
.
كل شيء يعمل بشكل صحيح عند تحديد بعض العميل. لكن لا - إذا لم يكن كذلك.
لقد اختبرت SP باستخدام SSMS - إنه يعمل بشكل صحيح في كلتا الحالتين - عند تحديد المعلمة وعندما لا (NULL
مرت بشكل صريح).
ماذا أفعل؟
المحلول
لن تطلق Sqldatasource إذا كانت أي من المعلمات خالية ، إلا إذا حددت خلاف ذلك:
<asp:SqlDataSource CancelSelectOnNullParameter="False" />
قد يكون من الضروري أيضًا إضافة قيمة افتراضية فارغة إلى معلمة QueryString الخاصة بك:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" />
نصائح أخرى
تحتاج إلى تحديد قيمة افتراضية للمعلمة لتلك المواقف ، على سبيل المثال:
<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/>
ثم في SP ، تحتاج إلى التحقق مما إذا كان العميل هو 0 ، وإرجاع جميع العملاء ، وإلا فإن العميل المحدد.