PDA

View Full Version : مشکل در نمایش لیست دسته بندی محصولات از دیتابیس؟



aminahmadi98
شنبه 08 تیر 1398, 00:38 صبح
باسلام و احترام.
در پروژه ای که دارم روش کار می کنم؛ یک فروشگاه ساده است.
برای مدیریت بهینه و سریع دسته بندی ها؛ تنها یک جدول ایجاد کرده ام با فیلد های زیر:
id - title - parentId

که parentId یا صفر است که به معنی دسته بندی اصلی است؛ و یا مقدار id یکی از دسته بندی های اصلی است که به معنی زیرمجموعه بودن آن دسته بندی هست.
مثال:
1 - دیجیتال - 0
2 - موبایل - 1
3 - اپل - 2
4 - سامسونگ - 2

در اینجا دیجیتال اصلی است. بعد موبایل زیر مجموعه دیجیتال هست و اپل و سامسونگ؛ زیرمجموعه موبایل.

حالا در صفحه مدیریت دسته بندی ها چون اطلاعات در جدول به صورت صفحه بندی نمایش می دهم؛ در هر صفحه 10 دسته بندی را ارسال می کنم (pagination)

می خواستم ببینم آیا query یا دستوری هست که لیست دسته بندی ها را به این شکل مرتب کند؛ یعنی اول لیست دسته بندی اصلی رو - بعد زیرمجموعه هاش رو؛ دوباره لیست دسته بندی اصلی و همینطور تا انتها؛ که وقتی به صورت صفحه بندی 10 تا 10 تا دیتا را برگشت می دهیم؛ بتوانیم دسته بندی اصلی را به همرا دسته بندی های زیرمجموعه اش نمایش دهیم؟؟

تاکید می کنم چون صفحه بندی؛ در هر صفحه 10 تا نمایش می دهم؛ دنبال یک دستور یا query هستم که بازگشتی آن دیتا های جدول؛ به صورت ترتیبی ابتدا دسته بندی اصلی + دسته های زیرمجموعه اش - دوباره دسته بندی بعدی باشد؟

اگر دیتا ها را یکجا بفرستم سمت کلاینت؛ اونجا با بررسی parent می تونم حلش کنم؛ ولی مشکل اینجاست که چون می خواهم حالت pagination دیتاها را ارسال کنم؛ نمی توان به ترتیب زیرمجموعه ای نمایش داد.

لطفا کمک کنید. خیلی خیلی مهم و واجب هست.

EnKamran
چهارشنبه 12 تیر 1398, 20:24 عصر
سلام دوست عزیز.
دوست من شما اگر این حالت رو در قسمت نمایش دسته بندی ها پیاده کردید پس نباید مشکلی داشته باشید و با همون کوئری فقط ده تا رو واکشی کنید.
البته طبیعتا شما به صورتی که به کاربر نمایش میدید نمیخواین که تو قسمت مدیریت هم نمایش بدید و بجاش از جدول استفاده میکنید، شما اگر ریلیشن رو درست کار کرده باشید نباید مشکلی داشته باشید و باید با استفاده از.Include(x=>x.Children) بتونید زیرمجموعه ها رو هم لود کنید اما پیشنهاد بنده به شما اینه که توی قسمت مدیریت شما محدودیت تعداد نمایش یا اینکه کوئری سنگینی بزنید ندارید، اصلا از صفحه بندی استفاده نکنید و بجاش از حالت TreeView استفاده کنید که مدیر هم راحت تر باشه شما هم راحت تر باشید.
خیلی وقت ها بخاطر پیروی از استانداردها سیستم رو سنگین می کنیم، منطقی نگاه کنید، چند عدد حدودا قراره دسته داشته باشید؟ بیشتر از 500؟ بیشتر از 1000؟ چند عدد سرمنو هستن که بخواد صفحه شما رو طولانی کنه؟ نهایتا شما 20 تا میخواین سرمنو داشته باشید (اگر بیشتر باشه زمان نمایش تو خود سایت دیزاینتون بهم میریزه) خوب اگر از درخت واره استفاده کنید شما همون 10-20 تا سر منو رو به مدیر نشون میدید و اگر هر منو رو بازکنه زیرمنو ها رو میبینه