PDA

View Full Version : ذخیره جستجو و فیلتر



شهابسلطانی
شنبه 12 بهمن 1398, 17:34 عصر
دوستان فرض کنید یک فرم جستجو وجود دارد
که کاربر شرطها رو انتخاب میکنه و عمل جستجو رو انجام میده
حالا چطور میشه این پارامترهایی رو که کاربر بعنوان جستجو وارد کرده رو با اسم مشخص ذخیره کرد تا دفعات بعد کاربر نخواهد دوباره پارامترها رو وارد بکنه
درواقع لیستی از جستجو ها داشته باشه و هروقت هر کدوم رو لازم داشت انتخاب کنه و عمل جستجو صورت بگیره

the king
شنبه 12 بهمن 1398, 18:17 عصر
دوستان فرض کنید یک فرم جستجو وجود دارد
که کاربر شرطها رو انتخاب میکنه و عمل جستجو رو انجام میده
حالا چطور میشه این پارامترهایی رو که کاربر بعنوان جستجو وارد کرده رو با اسم مشخص ذخیره کرد تا دفعات بعد کاربر نخواهد دوباره پارامترها رو وارد بکنه
درواقع لیستی از جستجو ها داشته باشه و هروقت هر کدوم رو لازم داشت انتخاب کنه و عمل جستجو صورت بگیره
خلاصه کاری که پیشنهاد می کنم اینه :

یک کلاس بسازید برای نگهداری این پارامتر ها مثلا SearchProfile که فیلدها یا مشخصه هاش این پارامتر ها باشن که در جستجو استفاده می کنید. پارامتر ها رو از هر نوعی تعریف کنید که مناسب جستجو باشه.
یک مشخصه یا فیلد Name هم برایش در نظر بگیرید که کاربر برای این پروفایل جستجو یک اسم هم بتونه ثبت کنه.
متد ToString کلاس رو هم override کنید تا مقدار Name رو برگردونه. اینکار برای وقتی می خواهید اشیاء این کلاس رو داخل ComboBox یا ListBox یا ... نمایش بدید مفیده تا بحای یک متن نامناسب اسم پروفایل دیده بشه.

بعد برای اینکه بشه اشیاء این کلاس رو در جایی ذخیره سازی کرد، یک متد رو پیاده سازی کنید که همه این مشخصه ها (یا فیلد های) داخل کلاس رو بچسبونه کنار هم تا یک string بشن و بتوانید در فایل یا رجیستری ثبتش کنید، مثلا ()public string GetString
مثلا بین رشته ها کاراکتر t\ (کاراکتر Tab) رو قرار بدید.
یک متد معکوس اش مثلا public static SearchProfile FromString(string s) رو هم باید بنویسید که بتونه از داخل string همه این مشخصه ها (یا فیلد ها) رو دربیاره و شیء کلاس رو با داده هاش پر کنه.

برای ذخیره سازی محتویات کلاس استفاده از string به عنوان واسطه صرفا یکی از روش ها است، اگر بخواهید می توانید بجای تبدیل به string یک روال Serialization اختصاصی XML یا مبتنی بر Stream طراحی کنید که از stream باینری بخونه و در stream باینری بنویسه و ...
ولی در اغلب موارد که فقط خودتون از کلاس استفاده می کنید و لازم نیست کلاس خیلی فنی و اصولی پیاده سازی شده باشه، نیازی به نوشتنش نیست و همون تبادل داده با واسطه string کفایت می کنه.

بعد در فرم تون مجموعه ای از این پروفایل های جستجو رو از داخل فایل یا رجیستری یا پایگاه داده می خوانید و در ListBox یا ... پر می کنید.
هر کدوم هم که کاربر انتخاب کرد پارامتر های داخلش رو در کنترل های روی فرم ثبت می کنید.
یک دکمه هم اضافه می کنید برای ثبت پروفایل جستجوی جدید که اگر کاربر رویش کلیک کرد یک اسم از کاربر بپرسه،
یک شیء از اون کلاس بر اساس پارامتر های جستجوی روی فرم و اسمی که کاربر داده بسازید و اون رو هم همراه بقیه پروفایل ها ذخیره اش کنید.

شهابسلطانی
شنبه 12 بهمن 1398, 19:44 عصر
ممنون از این توضیحات کامل و بی نقص
امکانش هست یک نمونه کوچیک خودتون همینجا لطفا بگذارید:تشویق: