1 ضمیمه
نحوه ساخت فیلتر نمایش محصولات
با سلام و ادب.
من گزینه های مربوط به فیلتر رو به صورت داینامیک و از روی دیتابیس کنار صفحه ام قرار دادم (مثلا: دسته، رنگ، سایز، قیمت و ...) ولی نمی دونم چطور باید کوئری ها رو بنویسم که براساس فیلتر انتخاب شده محصولات را نمایش بده؟؟؟!!!
مثلا سایت زیر رو در نظر بگیرید که با تغییر دسته یا تغییر محدوده قیمت، محصولات بر آن اساس نمایش می یابند: لینک
ضمیمه 148530
نقل قول: نحوه ساخت فیلتر نمایش محصولات
سلام
شما کوئری نیاز دارید یا اینکه روش ها به چ صورت هست؟
این بستگی به طراحی دیتابیس شما هم داره
مثلا خصوصیات کالا در چند جدول ذخیره شده
مثالی از جستجوی داینامیک البته میتونید بسیار پیشرفته تر هم انجام بدید
https://barnamenevis.org/showthread.php?471215
نقل قول: نحوه ساخت فیلتر نمایش محصولات
نقل قول:
نوشته شده توسط
ali_md110
سلام
شما کوئری نیاز دارید یا اینکه روش ها به چ صورت هست؟
این بستگی به طراحی دیتابیس شما هم داره
مثلا خصوصیات کالا در چند جدول ذخیره شده
مثالی از جستجوی داینامیک البته میتونید بسیار پیشرفته تر هم انجام بدید
https://barnamenevis.org/showthread.php?471215
سلام مجدد.
جداول به این صورت هست که کالا در یک جدول، ویژگیهای اون کالا در جدول دیگه و خصوصیات هر ویژگی در جدول مجزای دیگه ای ذخیره شده. همینطور امکان اضافه کردن دسته جدید وجود داره.
مثلا جدول ویژگیهای کالا شامل: رنگ، سایز، جنس، برند و ... میشه، جدول خصوصیات هر ویژگی شامل: 40، 38، قرمز، سفید، گوچی، نخی و ... میشه و جدول کالا شامل: مانتو، کفش و ... هست.
تا اینجا که کالای به فرض مانتو نخی سفید 38 ذخیره بشه، درست کار می کنه و همینطور ویژگیها و خصوصیاتشون به صورت داینامیک از دیتابیس واکشی میشه و قرار می گیره اینکه چطور بگم وقتی سایز 38 و رنگ سفید انتخاب شد کالاهایی رو نشون بده که مثلا سایزشون 38 و رنگشون سفید هست رو نمی دونم.
اینکه فرمودید روش ها به چه صورتیه من درست متوجه منظورتون نشدم متاسفانه.
در اصل من بار اولمه که قصد دارم روی این قسمت از سایت کار کنم و متاسفانه نه از نحوه کوئری ها و نه روشهایی که در این زمینه وجود داره، اطلاعی ندارم. ممنون می شم اگر راهنماییم کنید.
البته ممنون بابت آدرسی که قرار دادید حتما بررسی می کنم.
نقل قول: نحوه ساخت فیلتر نمایش محصولات
ببینید دوست من , بستگی به برنامه شما هم داره که چه اندازه داینامیک باشه از نظر back-end و front-end
در همین سابت بالا جستجو بر اساس دسته -رنگ -برند-جنس هست
اگر این طراحی همیشه ثابت باشه و برای همه کالا ها همینجوری صدق کند
شما یک ویومدل برای جستجو میسازید
مثلا
public class ProductSearchViewModel
{
//برای جستجوی قیت public decimal price?{ get; set; }
//یک اینام برای مشخص کردن رنگ که در سمت کلاینت تبدیل به چک باکس میشود
public EnumColor Color{ get; set; }
//یک اینام برای مشخص کردن سایز البته میتوان بجای اینام از متغیرهای بولی هم استفاده کرد
public EnumSize Size{ get; set; }
یا
public EnumSize[] Size{ get; set; }
}
معمولا کوئری اول شما معولا یک کوئری بدون where هست که کل کالا ها در یک ویو نمایش داده میشه
var list;
list=contect.products.tolist()
چنانچه خواستید بر اساس یک فیلد فیلتر کنید
چون مقادیر جستجو از سمت کلاینت در ویومدل ریخته میشود
باید یک جستحوی شرطی بسازید
public IQueryable<Product> GetProducts(ProductSearchViewModel searchModel)
{
var result = Context.Products.AsQueryable();
if (searchModel != null)
{
if (searchModel.price.HasValue)
result = result.Where(x => x.price== searchModel.price);
//بیشتر از صفر نشان دهنده مقدار داشتن هستif (searchModel.Color>0)
result = result.Where(x => x.Color ==searchModel.Color);
if (searchModel.Size>0)
result = result.Where(x => x.Color == searchModel.Size);
}
return result;
}
اگر چند مقدار رنک انتخاب شده باشد فیلد را بصورت آرایه تعریف کنید و در جستجو هم ازContains استفاده کنید
نقل قول: نحوه ساخت فیلتر نمایش محصولات
سلام مجدد.
فرض رو بر این بذارید که ممکن است یک کالا بعضی از ویژگیها رو نداشته باشه مثلا اگر کاربر منوی "اکسسوری" رو انتخاب کنه مسلما کالاهای نمایش یافته ویژگیهای جنس و سایز و رنگ رو ندارن ولی اگر کاربر منوی "مانتو" رو انتخاب کنه، کالاهای نمایش یافته ویژگیهای جنس، سایز و رنگ رو دارن.
در اینصورت هم باید از ویو مدل استفاده بشه یا روش دیگه ای داره؟؟؟؟
نقل قول: نحوه ساخت فیلتر نمایش محصولات
در هر صورت شما برای ارسال پارامترهاتون به سمت سرور باید از یک روشی بهره ببرید
بکارگیری ویومدل یکی از این روشها هست
فرض کنید شما در سایدبار جستجو 10 پنل فیلتر جستجو داشته باشید و در این بین کاربر مثلا برای کالای انگشتر فقط 2 پنل مشاهده کند یکی جنس و دیگری قیمت
یا اینکه اگر گروه مانتو انتخاب شد 4 پنل فیلتر مشاهده کند مثل رنگ -جنس- قیمت- نوع پارچه
برنامه شما باید مکانیزمی داشته باشد که وقتی مثلا از پنل رنگها رنگ آبی انتخاب شد و دکمه سرچ زده شد به همراه رنگ آبی یک متغیر دیگر هم ارسال شود تا سرور متوجه شود شما فیلتر رنگ بندی را انتخاب کردید ب
این موارد باید در سمت بانک برنامه و در هنگام تعریف کالا و خصوصیات در نظر گرفته شود
یعنی شما باید منوهای سمت راست برنامه و فیلترینگ رو از بانک برنامه و بر اساس category های مختلف بسازید و داینامیک طراحی کنید
و یک کد یا عنوانی به هر گروه فیلتری اختصاص بدید تا هنگام ارسال به سمت سرور , سرور متوجه شود داده های ارسالی از کدام پنل جستجو هست