PDA

View Full Version : گفتگو: پیشنهاد برای پرکردن یک کمبوباکس از بانک با تعداد رکورد زیاد



saghari
سه شنبه 18 اسفند 1388, 22:42 عصر
با سلام

مسئله:
در یک پروژه یک فرم اطلاعاتی داریم که تعدادی از رکوردهاش باید از جداول پایه سیستم خونده و پربشه.
فرض کنید یه جدول داریم به نام موضوع که حدود 10000 رکورد داره.
حالا وقتی کاربر در فرم اطلاعات به این فیلد موضوع میرسه باید لیستی از موضوعات (از بانک موضوع) در اختیارش قراربگیره ، حالا اگه عبارت مورد نظرش در لیست بود که انتخاب کنه و اگه نبود عبارت رو اول به بانک موضوعات اضافه کنه و بعد همون رو در فرم هم نشون بده.

راه حل هایی که به نظرم رسید:
*اول اومدم با کمبو باکس این کار رو انجام دادم.
یعنی موقعی که فرم اطلاعاتی لود میشه کمبوباکس موضوع رو از بانک موضوعات پرکنم و ...
مشکل : حجم زیادی از اطلاعات باید از سرور گرفته شه. خصوصا اینکه حدود 10 تا 15 فیلد از این نوع در فرم داریم.

* در یک آپدیت پنل یک کمبو باکس (بدون اینکه بایند باشه) بزارم با یک دکمه جلوش برای جستجو تا هر زمان کاربر جستجو رو زد بر اساس عبارت وارد شده کمبوباکس رو پرکنم.
مشکل: خاصیت AutoComplete رو نداریم.

از عزیزان میخوام من رو در انتخاب بهترین راه حل راهنمایی کنن و هر پیشنهادی دارن دریغ نکنن.
قبلا از توجه شما ممنونم

ehsan2007
سه شنبه 18 اسفند 1388, 23:14 عصر
سلام شما دوست عزیز یک تک باکس بزار که فقط خواندنی باشه یک دکمه هم کنارش بزار وقتی روی دکمه کلیک میکنی بره به یک صفحه دیگه و با کلیک کردن روی موضوع کد موضوع داخل تکس باکس قار بگیره این کارو با جاوا اسکریپت میتونید انجام بدید
به عنوان مثال اضافه کردن عکس توی میهن بلاگ رو ببین متوجه میشید

mehdi.mousavi
چهارشنبه 19 اسفند 1388, 01:19 صبح
با سلام در یک پروژه یک فرم اطلاعاتی داریم که تعدادی از رکوردهاش باید از جداول پایه سیستم خونده و پربشه. فرض کنید یه جدول داریم به نام موضوع که حدود 10000 رکورد داره. حالا وقتی کاربر در فرم اطلاعات به این فیلد موضوع میرسه باید لیستی از موضوعات (از بانک موضوع) در اختیارش قراربگیره ، حالا اگه عبارت مورد نظرش در لیست بود که انتخاب کنه و اگه نبود عبارت رو اول به بانک موضوعات اضافه کنه و بعد همون رو در فرم هم نشون بده.

سلام.
شما نیازی ندارید که 10000 رکورد رو load کنید تا کاربر یکیشو بخواد select کنه. میتونید از Ajax Control Toolkit و کنترل AutoComplete Extender (http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx) استفاده کنید، تا هر کاراکتری که کاربر تایپ میکنه، همون لحظه یک Request به سرور بره، و مثلا 10 رکوردی که با اون کاراکتر شروع میشه، load بشه. حالا اگر کاربر با سرعت عادی تایپ کنه، مثلا 5 کاراکتر رو پشت سرهم وارد کنه، فقط یک Request به سرور میره و شما این فرصت رو دارید که 10 رکوردی که با اون 5 کاراکتر شروع میشن رو load و به Client برگردونید...

روش بعدی هم قرار دادن یک ... بعد TextBox هستش که با زدن ... یه Popup باز بشه و اونجا User بتونه بر اساس معیارهای مورد نظر، دنبال رکوردها بگرده و هر کدوم رو Select کرد، شما در TextBox قرار بدید و ID اش رو ملا در یک فیلد Hidden نگهداری کنید.

موفق باشید.

vb_nima
چهارشنبه 19 اسفند 1388, 01:39 صبح
دوست عزير من پستتون را كه خوندم اين به ذهنم رسيد حالا اگه بي ربط يا منظورتون را درست متوجه نشدم ببخشيد.من ميگم مثلا همه اين 10 هزار ركورد را داخل كمبو بازنكن . بلكه از دو كمبو كنار هم استفاده كن. ديگه اونوقت حجم اطلاعاتي كه از سرور ميگيري زياد نيست. يعني دو تا كمبو بصورت master/detail . كمبو موضوع را به دوتا كمبو "حروف الفبا" و "كمبو موضوع بر حسب حروف الفبا" . كه وقتي يكي از حروف الفبا انتخاب شود كمبو موضوع از ديتابيس بخونه و پر شه. يا مثلا دو كمبو "موضوع اصلي" و"موضوع فرعي" مثلا موضوع اصلي "كامپيوتر" و موضوعات فرعي "اينترنت، نرم افزار ، برنامه نويسي و ...".
اميدوارم منظورتون را درست متوجه شده باشم.

saghari
چهارشنبه 19 اسفند 1388, 03:23 صبح
با تشکر از عزیزانی که تا اینجا در این بحث شرکت کردن
دوست عزیز احسان: فکر میکنم فرقی نکنه که کل رکوردها رو تو همون صفحه باز کنی یا در صفحه دیگه بهر حال راهنمایی شما مثل روش اولی که عرض کردم عمل میکنه و شما نهایتا در صفحه ای که میخواهد موضوع رو انتخاب کنید همه رو باید بایند کنید و این یعنی همون انتقال حجم زیاد دیتا.
جناب آقای موسوی به نظرم مشکل روش پیشنهادی شما تعداد دفعاتی که با تایپ هر حرف صفحه به سمت کاربر میره مخصوصا اگه طول عبارتی که کاربر میخواد تایپ کنه زیاد باشه. تازه هیچ وقت نمیشه حدث زد سرعت با چه سرعتی تایپ میکنه و همچنین احتمال اینکه کاربر بدلیل خطای تایپی بخواد از BackSpace و Del استفاده کنه یا مثلا بخواد در یک قسمت متن کلیک کنه و در متن تغییری بده هست.
ضمنا من فعلا برای این منظور دارم از Telerik استفاده میکنم ولی اگه کمبوباکس Ajax Control Toolkit مشکلم رو حل کنه مشکلی در این خصوص ندارم.
جناب نیمای عزیز از توجه شما هم ممنونم. پیشنهاد شما رو در صورتیکه روش اول نهایی شد جایگزین اون میکنم. البته باز هم حجم دیتایی که با یک کاراکتر شروع میشه میتونه زیاد باشه ولی قطعا از فیل کردن کل دیتا خیلی بهتره.

mehdi.mousavi
چهارشنبه 19 اسفند 1388, 03:35 صبح
جناب آقای موسوی به نظرم مشکل روش پیشنهادی شما تعداد دفعاتی که با تایپ هر حرف صفحه به سمت کاربر میره مخصوصا اگه طول عبارتی که کاربر میخواد تایپ کنه زیاد باشه. تازه هیچ وقت نمیشه حدث زد سرعت با چه سرعتی تایپ میکنه و همچنین احتمال اینکه کاربر بدلیل خطای تایپی بخواد از BackSpace و Del استفاده کنه یا مثلا بخواد در یک قسمت متن کلیک کنه و در متن تغییری بده هست. ضمنا من فعلا برای این منظور دارم از Telerik استفاده میکنم ولی اگه کمبوباکس Ajax Control Toolkit مشکلم رو حل کنه مشکلی در این خصوص ندارم.

سلام.
AutoComplete Extender خودش میتونه داده ها رو Cache کنه (برای هنگامیکه backpspace زده میشه، یا چیزی نوشته میشه که قبلا از سرور گرفته شده بوده)، مدت زمان فاصله بین دو ضرب کلید قبل از فراخوانی وب متود سمت سرور نیز قابل tune کردن هستش، و خلاصه، این Extender با در نظر داشتن تمامی مواردی که اشاره کردید (و بسیاری دیگه) طراحی شده. نگران نباشید. یکبار روی سایت خودش که در پست قبلی لینکش رو ارسال کردم، آزمایش کنید تا با نحوه کارش آشنا بشید. اگر پاسخگوی نیاز شما بود، اونوقت ازش استفاده کنید.

(اگر تعداد کاراکترهای هر آیتم در لیست، مقدار نرمالی باشه، ممکنه با هر round-trip به سرور فقط 1-2 کیلوبایت اطلاعات از سرور دریافت بشه. دقت کنید که اینجا Full Postback رخ نمیده!!!)

موفق باشید.

saghari
چهارشنبه 19 اسفند 1388, 19:30 عصر
ضمن تشکر فراروان یک سوال دیگه هم داشتم.
کمبو باکس Ajax Control Toolkit و خاصیت Autocomplete mode هم از نظر عملکرد مثل استفاده از textbox و AutoComplete Extender هست؟

بازهم از وقتی که میذارید ممنون

mehdi.mousavi
چهارشنبه 19 اسفند 1388, 19:39 عصر
ضمن تشکر فراروان یک سوال دیگه هم داشتم.
کمبو باکس Ajax Control Toolkit و خاصیت Autocomplete mode هم از نظر عملکرد مثل استفاده از textbox و AutoComplete Extender هست؟

بازهم از وقتی که میذارید ممنون

سلام.
خیر. این دو یکسان نیستن. ComboBox مزبور، در واقع سعی کرده ComboBox موجود در Windows Form ها رو شبیه سازی کنه... تفاوت مهم این دو Extender ای که نام بردید در اینه که ComboBox آیتمهای خودش رو باید بصورت built-in کنار خودش داشته باشه، بعبارت دیگه آیتمها به client ارسال میشن (مثلا اگر 100 تا آیتم داره، هر 100 آیتم به Client ارسال میشه)، اما AutoComplete Extender از طریق Web Method آیتمهای خودش رو میگیره و فقط به اون تعدادی که شما تعیین میکنید، این کارو بصورت Dynamic انجام میده.

موفق باشید.

mohsen_zelzela00
چهارشنبه 19 اسفند 1388, 21:29 عصر
سلام.
شما نیازی ندارید که 10000 رکورد رو load کنید تا کاربر یکیشو بخواد select کنه. میتونید از Ajax Control Toolkit و کنترل AutoComplete Extender (http://www.ASP.NET/AJAX/AjaxControlToolkit/Samples/AutoComplete/AutoComplete.aspx) استفاده کنید، تا هر کاراکتری که کاربر تایپ میکنه، همون لحظه یک Request به سرور بره، و مثلا 10 رکوردی که با اون کاراکتر شروع میشه، load بشه. حالا اگر کاربر با سرعت عادی تایپ کنه، مثلا 5 کاراکتر رو پشت سرهم وارد کنه، فقط یک Request به سرور میره و شما این فرصت رو دارید که 10 رکوردی که با اون 5 کاراکتر شروع میشن رو load و به Client برگردونید...

روش بعدی هم قرار دادن یک ... بعد TextBox هستش که با زدن ... یه Popup باز بشه و اونجا User بتونه بر اساس معیارهای مورد نظر، دنبال رکوردها بگرده و هر کدوم رو Select کرد، شما در TextBox قرار بدید و ID اش رو ملا در یک فیلد Hidden نگهداری کنید.

موفق باشید.

با سلام
استاد من هم در سایتی که دارم طراحی می کنم همین مشکل رو دارم و با این تفاوت که کاربر حتماً باید یکی از item های DropDown رو انتخاب کنه و نتونه یه چیزه دیگه وارد کنه من در فرم خودم 24 فیلد دارم که 12 تای آن با DropDown هستند و اگه بخوام اطلاعات رو بخونم و این DropDown ها رو پر کنم خیلی طول میکشه

ممنون میشم اگه کمکم کنید

mehdi.mousavi
پنج شنبه 20 اسفند 1388, 00:43 صبح
با سلام استاد من هم در سایتی که دارم طراحی می کنم همین مشکل رو دارم و با این تفاوت که کاربر حتماً باید یکی از item های DropDown رو انتخاب کنه و نتونه یه چیزه دیگه وارد کنه من در فرم خودم 24 فیلد دارم که 12 تای آن با DropDown هستند و اگه بخوام اطلاعات رو بخونم و این DropDown ها رو پر کنم خیلی طول میکشه ممنون میشم اگه کمکم کنید

سلام.
اگر تعداد آیتمهای موجود در هر کنترل محدوده، مثلا از 7-8 تا بیشتر نمیشه، بهتره که از DropDownList استفاده کنید. در غیر اینصورت، از AutoComplete Extender (http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx) استفاده کنید. اما اینکه گفتید دقیقا مشکلی هستش که در AutoComplete Extender وجود داره و شما نمیتونید سمت client کاری برای حل مشکل کنید. تنها راه این هستش که اگر Text ای نوشته شد که در آیتمهای لیست موجود نبود، سمت سرور هنگام Validate کردن کنترل، Validation رو Fail کنید.

لطفا Ajax Control Toolkit رو یکبار Download و آزمایش کنید (http://www.asp.net/ajax/downloads/). در بیشتر مواقع، این Extender میتونه مشکل شما رو حل کنه.

موفق باشید.

mohsen_zelzela00
پنج شنبه 20 اسفند 1388, 12:00 عصر
سلام.
اگر تعداد آیتمهای موجود در هر کنترل محدوده، مثلا از 7-8 تا بیشتر نمیشه، بهتره که از DropDownList استفاده کنید. در غیر اینصورت، از AutoComplete Extender (http://www.ASP.NET/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx) استفاده کنید. اما اینکه گفتید دقیقا مشکلی هستش که در AutoComplete Extender وجود داره و شما نمیتونید سمت client کاری برای حل مشکل کنید. تنها راه این هستش که اگر Text ای نوشته شد که در آیتمهای لیست موجود نبود، سمت سرور هنگام Validate کردن کنترل، Validation رو Fail کنید.

لطفا Ajax Control Toolkit رو یکبار Download و آزمایش کنید (http://www.ASP.NET/ajax/downloads/). در بیشتر مواقع، این Extender میتونه مشکل شما رو حل کنه.

موفق باشید.

استاد میشه همچین کنترلی رو با استفاده از Ajax خودمان درست کنیم؟؟؟
مسئول شرکت علاقه زیادی به DropDownList داره و این کار رو فقط با DropDownList میگه انجام بدید حالا اگه بخوام این کار رو با استفاده از DropDownList انجام بدم آیا راحلی وجود دارد که سرعت Load اولیه Page خودم پایین نیات؟؟؟


ممنون میشم راهنمایی کنید

saghari
پنج شنبه 20 اسفند 1388, 23:03 عصر
همونطور که دوستان فرمودند اگه از DropDownList بخواهی استفاده کنی باید کل اطلاعات رو لود کنی.
در اینصورت فکر کنم پیشنهاد دوستمون که فرمودند از 2 تا DropDownList یا کمبو استفاده کنیم خوب باشه

Milad Mohseny
پنج شنبه 20 اسفند 1388, 23:51 عصر
مسئول شرکت علاقه زیادی به DropDownList داره و این کار رو فقط با DropDownList میگه انجام بدید حالا اگه بخوام این کار رو با استفاده از DropDownList انجام بدم آیا راحلی وجود دارد که سرعت Load اولیه Page خودم پایین نیات؟؟؟

من روش جناب mehdi.mousavi رو يعني AutoComplete Extender معمولا استفاده ميكنم ولي اگه حتماً drp ميخواهي يه ايده اينه كه مثلاً حروف الفبا از الف تا ي به صورت لينك ليبل در همان page كه drp وجود داره نمايش بده و كاربر ببينه اون موردي كه ميخواهد از ليست انتخاب كند با چه حرفي شروع ميشود و پس از آنكه روي آن حرف كليك كرد فقط ركورد هايي رو load كن كه با اون حرف شروع ميشوند اينجوري تعداد ركورد هاي كمتري load ميشه.
يا
ميتوني page بندي كني مثلاً بر اساس حروف الفبا مقادير رو مرتب كن و مثلاً 100 تا ركورد اول تو page 1 و 100 تاي دوم تو page 2 و... load كن.
يا
...
كه البته هر دوروش مشكلاتي داره و به خوش دستي AutoComplete Extender نميشه.

mehdi.mousavi
جمعه 21 اسفند 1388, 01:02 صبح
میشه همچین کنترلی رو با استفاده از Ajax خودمان درست کنیم؟؟؟ مسئول شرکت علاقه زیادی به DropDownList داره و این کار رو فقط با DropDownList میگه انجام بدید حالا اگه بخوام این کار رو با استفاده از DropDownList انجام بدم آیا راحلی وجود دارد که سرعت Load اولیه Page خودم پایین نیات؟؟؟ ممنون میشم راهنمایی کنید

سلام.
همونطور که قبلا هم خدمتتون عرض کردم اگر تعداد آیتمهای موجود در لیستتون محدوده، تاثیری در سرعت نداره. حتی شما میتونید در یک round-trip (رفت و برگشت) به RDBMS اطلاعات رو در Resultset های متفاوتی بگیرید و فقط یک بار Command مورد نظر رو برای گرفتن محتوای 12 DropDownList اجرا کنید. اینطوری سریعتر هم خواهد شد.

اما اگر تعداد آیتم ها زیاده، باید این مساله رو بوضوح با مسئولین شرکت در میون بذارید. هیچ راهی وجود نداره که شما صدها (یا هزاران) رکورد رو از یانک بازیابی کرده و اونها رو در یک چشم بهم زدن به Client برسونید. Optimize ترین کدی هم برای اینکار نوشته بشه، در نهایت باید داده ها رو از بانک بگیره و اونها رو در Stream خروجی قرار بده. بنابراین راهی برای سرعت دادن به این مساله نیست. حتی اگر اطلاعات هم Cache شده باشه، بازهم تا یک حدی می تونید سرعت رو افزایش بدید.

البته، همونطوریکه خودتون هم عنوان کردید، میشه یک DropDownList ای درست کرد که Ajax-Style باشه و داده ها رو OnDemand لود کنه. اگر از jQuery در Web App خودتون استفاده می کنید، می تونید plugin های خوبی برای اینکار پیدا کنید (که همگی رایگان هم هستند).

اما من هنوز هم معتقدم که استفاده از AutoComplete Extender میتونه انتخاب بسیار خوبی باشه بشرطیکه، امکان Advanced Search با گذاشتن ... در کنار TextBox مزبور برای کاربر فراهم بشه تا اگر کاربر هیچ ایده ای برای تایپ کاراکتر ابتدایی نداره، بتونه از پنجره Popup ای که با زدن ... باز میشه، آیتم مورد نظر رو بر اساس معیارهای متفاوت، جستجو کرده و با انتخاب هر آیتمی که مایل بود، آیتم مزبور بطور خودکار در TextBox قرار بگیره و Popup window بسته بشه.

موفق باشید.

mohsen_zelzela00
جمعه 21 اسفند 1388, 15:28 عصر
سلام.
همونطور که قبلا هم خدمتتون عرض کردم اگر تعداد آیتمهای موجود در لیستتون محدوده، تاثیری در سرعت نداره. حتی شما میتونید در یک round-trip (رفت و برگشت) به RDBMS اطلاعات رو در Resultset های متفاوتی بگیرید و فقط یک بار Command مورد نظر رو برای گرفتن محتوای 12 DropDownList اجرا کنید. اینطوری سریعتر هم خواهد شد.

اما اگر تعداد آیتم ها زیاده، باید این مساله رو بوضوح با مسئولین شرکت در میون بذارید. هیچ راهی وجود نداره که شما صدها (یا هزاران) رکورد رو از یانک بازیابی کرده و اونها رو در یک چشم بهم زدن به Client برسونید. Optimize ترین کدی هم برای اینکار نوشته بشه، در نهایت باید داده ها رو از بانک بگیره و اونها رو در Stream خروجی قرار بده. بنابراین راهی برای سرعت دادن به این مساله نیست. حتی اگر اطلاعات هم Cache شده باشه، بازهم تا یک حدی می تونید سرعت رو افزایش بدید.

البته، همونطوریکه خودتون هم عنوان کردید، میشه یک DropDownList ای درست کرد که Ajax-Style باشه و داده ها رو OnDemand لود کنه. اگر از jQuery در Web App خودتون استفاده می کنید، می تونید plugin های خوبی برای اینکار پیدا کنید (که همگی رایگان هم هستند).

اما من هنوز هم معتقدم که استفاده از AutoComplete Extender میتونه انتخاب بسیار خوبی باشه بشرطیکه، امکان Advanced Search با گذاشتن ... در کنار TextBox مزبور برای کاربر فراهم بشه تا اگر کاربر هیچ ایده ای برای تایپ کاراکتر ابتدایی نداره، بتونه از پنجره Popup ای که با زدن ... باز میشه، آیتم مورد نظر رو بر اساس معیارهای متفاوت، جستجو کرده و با انتخاب هر آیتمی که مایل بود، آیتم مزبور بطور خودکار در TextBox قرار بگیره و Popup window بسته بشه.

موفق باشید.

مرسی استاد از توضیحات کاملی که دادید

شاید تعداد رکوردهای که وجود داره در هر DropDownList بین 20 تا 30 ، ITEM هست ؟؟
در این صورت چی پیشنهاد می دهید؟؟؟؟

استاد یه خواهش . میشه در مورد پاراگراف اول بیشتر توضیح بدید



همونطور که قبلا هم خدمتتون عرض کردم اگر تعداد آیتمهای موجود در لیستتون محدوده، تاثیری در سرعت نداره. حتی شما میتونید در یک round-trip (رفت و برگشت) به RDBMS اطلاعات رو در Resultset های متفاوتی بگیرید و فقط یک بار Command مورد نظر رو برای گرفتن محتوای 12 DropDownList اجرا کنید. اینطوری سریعتر هم خواهد شد.




یه دنیا ممنون

saghari
جمعه 21 اسفند 1388, 17:26 عصر
دوست عزیز 20-30 آیتم که دیتای زیادی نیست. از همون DropDownList یا کمیو باکس استفاده کن.
سوالی که من طرح کردم برای حدود 10000 رکورد بود.
منظور دوستموم از پاراگراف اول این هست که شما میتونید با ارسال تنها یک درخواست به سمت سرور (بانک اطلاعاتی) اطلاعات مورد نظر را (Resultset ) بگیرید

mehdima
شنبه 22 اسفند 1388, 02:08 صبح
با سلام

به نظر شما بشری روی کره زمین وجود داره که بخواد از بین 10000 رکورد یکی رو انتخاب کنه.؟

آیا شما سیستم اطلاعاتی سراغ دارید که در بالاترین سطح(موضوع) شامل 10000 رکورد باشه.؟


اگه جواب مثبته دست ما رو هم بگیرید.

موفق و موید باشید.

saghari
شنبه 22 اسفند 1388, 07:55 صبح
بله دوست عزیز وجود داره (10000 تا که تعداد زیادی نیست)
بعنوان نمونه سیستم کتابخانه ای که من نوشتم و العان هم در سازمان بنادر و چند دانشگاه و شرکت داره استفاده میشه.
در این سیستم تعدادی تیبل پایه داریم مثل موضوعات - تتالکان و ...
حالا هر مدرکی که اطلاعاتش در سیستم ثبت میشه اطلاعات پایه خودش رو از این تیبل های پایه بر میداره.
جهت اطلاع شما بعنوان مثال سازمان بنادر و کشتیرانی با وجود اینکه تنها حدود 6600 رکورد مدرک داره، در حال حاضر بانک موضوعاتش حدود 8000 رکورد و بانک تتالگان اون حدود 4000 رکورد و بانک اصطلاحاتش حدود 5000 رکورد داره.

موفق باشید

mehdima
شنبه 22 اسفند 1388, 09:34 صبح
بله دوست عزیز وجود داره (10000 تا که تعداد زیادی نیست)
بعنوان نمونه سیستم کتابخانه ای که من نوشتم و العان هم در سازمان بنادر و چند دانشگاه و شرکت داره استفاده میشه.
در این سیستم تعدادی تیبل پایه داریم مثل موضوعات - تتالکان و ...
حالا هر مدرکی که اطلاعاتش در سیستم ثبت میشه اطلاعات پایه خودش رو از این تیبل های پایه بر میداره.
جهت اطلاع شما بعنوان مثال سازمان بنادر و کشتیرانی با وجود اینکه تنها حدود 6600 رکورد مدرک داره، در حال حاضر بانک موضوعاتش حدود 8000 رکورد و بانک تتالگان اون حدود 4000 رکورد و بانک اصطلاحاتش حدود 5000 رکورد داره.

موفق باشید
با سلام
بله درسته دوست عزیز بیشتر از این تعداد هم هست ولی خیلی جالبه.آیا شما در سیستمی که نوشته اید جایی مجبور شده اید که این تعداد زیاد رکورد رو مثلا در یک DropDownlist به کاربر نمایش بدید.؟
من که گیج شدم.:متفکر:

Milad Mohseny
شنبه 22 اسفند 1388, 10:07 صبح
بله دوست عزیز وجود داره (10000 تا که تعداد زیادی نیست)
بعنوان نمونه سیستم کتابخانه ای که من نوشتم و العان هم در سازمان بنادر و چند دانشگاه و شرکت داره استفاده میشه.
در این سیستم تعدادی تیبل پایه داریم مثل موضوعات - تتالکان و ...
حالا هر مدرکی که اطلاعاتش در سیستم ثبت میشه اطلاعات پایه خودش رو از این تیبل های پایه بر میداره.
جهت اطلاع شما بعنوان مثال سازمان بنادر و کشتیرانی با وجود اینکه تنها حدود 6600 رکورد مدرک داره، در حال حاضر بانک موضوعاتش حدود 8000 رکورد و بانک تتالگان اون حدود 4000 رکورد و بانک اصطلاحاتش حدود 5000 رکورد داره.
کاملاً حرف شما متینه. ولی من خودم تو سیستم هام اگر تعداد آیتم های drp بیشتر از 30 یا 40 تا بشه کاربرام عصبانی میشوند و میگن ما نمیتونیم پیدا کنیم و حتی میگن اگه بتونیم تایپ کنیم راحت تریم به جای اینکه مثلاً از یه لیست 70 تایی گزینه مورد نظر رو انتخاب کنیم.
به نظر من بهترین راه صحبت با کارفرما و توضیح منطقی مشکل است و مجاب کردن آن برای استفاده از AutoComplete Extender یا هرچیزه دیگه ای که خودت صلاح بدونی. یه صفحه نمونه درست کن و 10000 تا نه فقط 300 یا 400 تا آیتم توش بریز و به عنوان نمونه بده کارفرما و بهش بگو فلان گزینه رو تو این آیتم ها پیدا کنه مطمئن باش نظرش عوض میشه. :چشمک:

saghari
شنبه 22 اسفند 1388, 13:19 عصر
دوست عزیز همونطور که در پست های قبلی عرض کردم قطعا قرار نیست کاربر بصورت کمبوباکس فقط خواندنی عمل کنه و در اینحور موارد کاربر شروع به تایپ میکنه و لیستی که در اختیارش میگیره با توجه به عبارت تایپ شده فیلتر میشه.
بحث ما بیشتر سر این بود که از چه روشی استفاده کنیم تا بهترین عملکرد رو داشته باشیم.
ضمنا مطلب قبلی رو فقط جهت پاسخ به mehdima که فرموده بودند آیا ممکنه چنین سیستمی وجود داشته باشه عرض کردم.
در مورد نظر شما باید عرض کنم صرف اینکه به کارفرما نشان بدیم یک مورد بد عمل میکن و یا کند است کافی نیست، و به نظر من زمانی باید اینکار رو کرد که راه حل مناسبی هم برای مشکل داشته باشیم.
در این مورد خاص اگه منظور شما مشکل در طراحی پایگاه داده و .... است. بسیار ممنون میشم که برای مثال زده شده بهترین راه حلی که بنظر شما میرسه رو بفرمایید.
من تا به حال در موارد مشابه 2 تا روش رو دیدم:
1- همین روش بالا : یعنی یک بانک پایه وجود داره و وقتی در سایر قسمت های برنامه میخواد از اطلاعات اون استفاده بشه فقط کد یونیک اون در جدول استفاده کننده نگهداری میشه. خوب مزایای این روش خیلی زیاده (حفظ یکپارچگی بانک اطلاعاتی، جلوگیری از ورود اطلاعات تکراری در جداول پایه، امکان اصلاح سریع قسمت هایی که از اون استفاده کردن و ...) مشکل : همون که تو این تاپیک مطرح شده
2- جداول پایه رو فراموش کنی:متعجب: . یعنی کاربر در هر فیلد اطلاعاتش رو خودش وارد کنه بعد بیای یک تکه کد بنویسی که تحت عنوان ایندکس سازی یا ... بیاد مشکل عبارات تکراری و بقیه موارد رو حل کنه:متفکر:.
گرچه یکی از پرفروش ترین نرم افزارهای کتابداری کشور داره از روش دوم استفاده میکنه ولی نظر شخصی من اینه که این روش خیلی مشکل داره. شاید هم اشتباه کنم.
3- اگه روش دیگه و بهتری وجود داره یا به نظر شما میرسه شما بفرمایید:چشمک:
در انتها از همه عزیزانی که در این تاپیک شرکت کردند و راهنمایی فرمودند تشکر کرده و پیشاپیش آرزوی سالی خوش و سرشار از موفقیت، سلامتی و شادی رو برای شما و همه هموطنان خوبم دارم.

Milad Mohseny
شنبه 22 اسفند 1388, 14:20 عصر
در این مورد خاص اگه منظور شما مشکل در طراحی پایگاه داده و .... است. بسیار ممنون میشم که برای مثال زده شده بهترین راه حلی که بنظر شما میرسه رو بفرمایید.
دوست خوبم کجای حرف اشاره به بد طراحی کردن و یا ... داشت؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
فک کنم برنامه خیلی اصابت رو خورد کرده دوست خوبم :لبخندساده:
من گفتم کاربرام چیمیگن. نگفتم خدایی نکرده یه وقت بانک شما ایراد داره لطفاً دوباره پست من رو بخن. :بوس:
آقا تو خودت استاد منی ولی در راستای مشکلی که گفتی و روش هایی هم که دوستان گفتن اگه با AutoComplete Extender حال نمیکنی همونتور که دوستان XMLHttpRequest رو پیشنهاد دادن لینک زیر رو ببین یه مثال از XMLHttpRequest هست و شاید با کمی تغییر بیشتر به کارت بیاد یا ازش الهام بگیری.
http://www.w3schools.com/xml/xml_http.asp
در آخر آقا گردن ما از مو باریکتر :لبخند: (زیاد باور نکن)

mahdi.violin
دوشنبه 09 اسفند 1389, 04:03 صبح
آقا ما نمی تونیم این بانک اطلاعاتی که سنگین هست رو اول برنامه که داره لود می شه ، بخونیم و به صورت Static قرار بدیم و درد کل برنامه فقط از همون استفاده کنیم ؟ اگر هم کم و زیاد شد به وسیله Trigger ها کنترل کنیم ؟
اقا اگه ربطی به این تاپیک نداره ، منتقل کنید ولی جوابش رو بدید .