PDA

View Full Version : sort



hosein kasbiyan
چهارشنبه 01 مهر 1388, 02:49 صبح
من یک datasource دارم که اطلاعاتشو زمان اجراداخل یه جدول نمایش میدم حالا میخوام قابلیت sort برای هرکدوم از ستون ها ایجاد کنم از list view یا grid view هم نمیخوام استفاده کنم
ممنون میشم اگرکمکم کنید

nazaninam
چهارشنبه 01 مهر 1388, 09:04 صبح
از چی برای نمایش اطلاعات استفاده کردی ؟
اگر کاملا دستی انجام دادی ، نحوه مرتب سازی رو مستقیم به دستورات SQL بفرست

hosein kasbiyan
چهارشنبه 01 مهر 1388, 13:10 عصر
ممنون که جوابم رو دادید

من از یه table استفاده کردم حالا برای ایجاد sort میخوام از پارامتراستفاده کنم اما نمیدونم چطور,درواقع قصد دارم یک grid view رو خودم ایجاد کنم
ممنون میشم اگر راهنماییم کنید

nazaninam
چهارشنبه 01 مهر 1388, 13:32 عصر
یک روش این است که مانند سایت های معروف (مثلا Download.com) چند DroDownlist قرار دهید
یکی از DropDown ها شامل لیست فیلد های جدول شماست
یکی دیگر هم صعودی و نزولی بودن را مشخص می کند
اکنون کافیست که دستور Select را بر اساس این دو مشخص نمایید :




string Query="select * from table order by "+DdlSort.Selectedvalue+" "+DdlOrder.SelectedValue




موفق باشید

آریوس1985
چهارشنبه 01 مهر 1388, 13:37 عصر
اگر منظورتون از ایجاد سورت، به وجود آوردن شرایطیه که کاربر با کلیک روی یک ستون بتونه نحوه ی نمایش رو تغییر بده دیگه قضیه از SQL خارج میشه.(اصولا البته، وگرنه غیر اصولی راه داره :گیج:)
شما در واقع می خواهید خودتون یک کنترل بنویسید که البته واقعا دلیلشو متوجه نمیشو که چرا از گرید یا ... استفاده نمی کنید!

nazaninam
چهارشنبه 01 مهر 1388, 13:45 عصر
اگر منظورتون از ایجاد سورت، به وجود آوردن شرایطیه که کاربر با کلیک روی یک ستون بتونه نحوه ی نمایش رو تغییر بده دیگه قضیه از SQL خارج میشه.(اصولا البته، وگرنه غیر اصولی راه داره :گیج:)


عجب !!!!!!!
چطور به SQL مربوط نیست ، فرض کنید شما 2 میلیون رکورد دارید
حالا میخواهید 10 رکورد از اطلاعات را بر حسب فیلد Name و به صورت صعودی دریافت کنید
پس از دریافت میخواهید آن را بر اساس فیلد دیگری مرتب کنید یا نزولی کنید ، اگر از SQL خارج می شود ، شما بفرمایید چگونه این کار انجام میشود؟ آن هم به صورت اصولی

آریوس1985
چهارشنبه 01 مهر 1388, 13:49 عصر
اگر قرار باشه به ازای هر با سورت کردن یک بار Query بزنیم که فاتحه ی سرور خواندست!!
غیر از اینه؟؟

nazaninam
چهارشنبه 01 مهر 1388, 13:58 عصر
دقیقا اشتباهه !
پس فکر کردید اطلاعات از کجا قرار است بیایند ؟
فرض کنید اطلاعات 2 میلیون کاربر داخل بانک هست و شما فقط 10 رکورد میخواهید !
نکنه همه 2 میلیون رکورد را درخواست می دهید و سپس به وسیله دیتاست سورت می کنید؟
فاتحه سرور با این کار خونده میشه نه درخواست های منطقی
در ضمن میتونید از Cache استفاده کنید
شما نباید مسئله را ساده ببینید ، شاید برای 500 رکورد روش دیتاست و مرتب سازی به روش شما جواب بده ولی باید کلی تر به قضیه نگاه کرد

آریوس1985
چهارشنبه 01 مهر 1388, 14:08 عصر
حق کاملا با شماست
البته اگر دوست دارید می تونید یه کتکی هم بنده رو بزنید
جسارتا عرض میکنم دوست عزیز، در برنامه نویسی با توجه به شرایط کد ها نوشته میشه. من هم اینجا با توجه به اینکه دوستمون هیچ اشاره ای به تعداد رکورد ها نکردن فرض رو بر این گذاشتم که تعداد معمولیه(مثل اکثر مواقع)
ولی اینکه یک روش رو حفظ بکنیم که کلا هر وقت سورت خواستیم Query بزنیم فکر می کنم تا حدود زیادی غیر منطقی باشه.
شما بدون اطلاع از تعداد رکورد ها ی این دوستمون پیشنهاد فرستادن بار به روی پهنای باند را دادید که من هم گفتم در حالت طبیعی اینکار رو انجام نمیدن
موفق باشید

nazaninam
چهارشنبه 01 مهر 1388, 14:23 عصر
بنده از اینکه شما روش خود را به عنوان یک روش اصولی ارائه می کنید و می فرمایید اگر بخواهید با SQL کار کنید غیر اصولی و... است تعجب کردم ! و گرنه برای هر کاری چندین روش وجود دارد
بنده هم قصد جسارت نداشتم ، ولی این را بدانید که مایکروسافت با بعضی از رفتار های نرم افزاری خود ما را بد عادت کرده است
به عنوان مثال صفحه بندی و Sorting در Gridview به صورت پیشفرض با اینکه بسیار ساده است بسیار هم مزرخف است ، شاید در تعداد رکورد ها پایین شما متوجه این اشکال نشوید ولی با بالا رفتن تعداد رکورد ها با مشکلات زیادی روبرو می شود که مجبور به صفحه بندی و مرتب سازی دستی خواهید شد
وقتی که صفحه بندی را به صورت دستی انجام می دهید با رفتن به هر صفحه باید یک Query جدید بزنید حال آنکه در حالت پیشفرض کل رکورد ها دریافت شده و در خورد Grid صفحه بنده می شوند
در هر صورت پیشنهاد می کنم در هر حالتی شما روش Enterprise را در پیش بگیرید و با فرض کم بودن حجم اطلاعات برنامه نویسی نفرمایید
موفق و پیروز باشید