PDA

View Full Version : سوال: جستجو بر اساس فیلد های مختلف در پایگاه



mehrdad85
دوشنبه 13 دی 1389, 17:31 عصر
سلام
دوستان من میخام بر اساس فیلد های مختلف در یک جدول جستجو انجام بدم
سوالی که دارم اینه که میخام صفحه جستجویی که دارم به صورت پویا ایجاد بشه مثلا فرض کنید میخام در پایگاه بر اساس فیلد های 1و2و3و4و5 جستجو انجام بدم
طبیعتا کاربر مشخص میکنه که میخاد روی کدوم فیلد جستجو انجام بشه و مطابق با اون چه کنترل هایی برای دریافت اطلاعات از کاربر در صفحه قرار بگیره
کاربر مشخص میکنه که میخاد جستجو روی فیلد 1 انجام بشه باید یه dropDown در صفحه ظاهر بشه و مقادیر این dropDown از پایگاه خوانده میشه و برای انتخاب در اختیار کاربر قرار میگیره و با انتخاب هر کدوم از اینا توسط کاربر این مقدار در پایگاه ثبت میشه
اگه کاربر تصمیم بگیره که بخواد جستجو روی فیلد های 1و 2و 3 انجام بشه باید 3 تا کنترل dropDown textBox , radioButton در صفحه قرار بگیره و مثل قبل این کنترل ها مقادیر خودشونا از پایگاه دریافت میکنن و طبیعتا مقادیر ثبت شده در آنها توسط کاربر نیز باید معیار جستجو قار بگیرن

ممنون میشم راهنمایی کنید
در ضممن اگه برای پیاده سازی جستجو های ترکیبی و چندگانه مطلب پیشنهاد و یا نمونه ای دارید ممنون میشم


مرسی

az.heidarzadeh
دوشنبه 13 دی 1389, 18:31 عصر
خب سوالی که داشتید با یه کم فکر ساده میشه ٰ؛ اول اینکه باید ببینید جستجو قراره روی یک دیتا گرید انجام بشه که در این صورت موارد جستجو میتونه از فیلدهای دیتا گرید بدست بیاد و اگه فیلدها تغییر نمیکنند و همیشه ثابت هستند میتونید شرط بزارید که اگه این انتخاب شد کنترل ایجاد شده x باشه یا y ...
برای جستجوهای ترکیبی هم خیلی راحت میتونید با اضافه کردن فیلدها بصورت رشته در where این کارو انجام بدید

private void FillData()
{
//**************************** Create Search *******************************//
string str = " WHERE IsActive=1 ";
if (ddlNewsType.SelectedIndex > 0)
str += " And NewsType =" + ddlNewsType.SelectedValue;
if (txtNewsTitle.Text != "")
str += " And NewsTitle like N'" + txtNewsTitle.Text + "%'";
if (txtNewsDate.Text != "")
str += " And NewsDate ='" + txtNewsDate.Text + "'";
grvNews.DataSource = clsMe.GetTable("SELECT * From FullNews" + str, "News");
grvNews.DataBind();
}

mehrdad201
دوشنبه 13 دی 1389, 19:05 عصر
یه تاپیکی یکی از دوستان زده بود در مورد گرید ویو و جستجو

من اونجا یه سمپل گذاشتم در مورد استفاده از کلاسها و برنامه نویسی شی گرا برای سرچ در پایگاه داده....

اگه اون تاپیک رو پیدا کنی میتونی از سمپلش استفاده کنی. فقط باید لایه DATABASE ACCESS رو خودت اضافه کنی بهش

mehrdad85
سه شنبه 14 دی 1389, 09:56 صبح
کجا سمپل را میتونم گیر بیارم؟

mehrdad201
سه شنبه 14 دی 1389, 11:33 صبح
اقا مهرداد عزیز

شما اول بیا روال سرچ در پایگاه داده رو روی لایه DATA ACCESS پیاده سازی کن. یه کلاس ایجاد کن و تابع سرچت رو بهش اضافه کن. تابع رو هم طوری بنویسی که پارامترها رو به صورت دیتا کالکشن بهش پاس کنی. اینطوری مجبور نیستی واسه هر تغییری بیای تابعت رو دستکاری کنی

بعد یه لایه منطقی داری در برنامت (لایه business logic) اونجا باید دیتا کالکشن که حاوی ایتمهای مورد نظر برای سرچ هست رو بسازی و ارسال کنی به لایه data access

و لایه بالاتر هم لایه اینترفیس هست که اونجا شما میای ایتمهای انتخاب شده رو ارسال میکنی به لایه منطقی
-------------
این شکلی از معماری 3 لایه هست (البته ممکنه بی عیب نباشه چون من خیلی حرفه ای نیستم. دوستان حرفه ای تر شاید مدل بهینه تر و قشنگتری رو پیشنهاد بدن)

حالا طرز کار چطوریه؟
=============================
فرض کن توی صفحه سایتت کاربر مقدار نام ، نام خانوادگی و شماره ملی رو وارد میکنه
شما این 3 مقدار رو ارسال میکنی به لایه منطقی

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


عنوان: نام - مقدار: رضا
عنوان: نام خانوادگی - مقدار: رضا زاده
عنوان: شماره ملی - مقدار: 12345

حالا این دیتا ابجکت که به لایه data access فرستاه میشه میره ، اونجا بازیابی میشه و مقادیرش ارسال میشن به یک stored procedure
در نهایت نتیجه به صورت یک رکورد یا مجموعه ای از رکوردها برمیگرده به لایه منطقی و از اونجا میره به لایه اینترفیس تا به کاربر نشون داده بشه

شما در مورد موضوع مورد بحثت سرچ کن. توی فروم 3 4 جا توضیح داده شده

mehrdad85
چهارشنبه 15 دی 1389, 08:33 صبح
ممنون آقا مهرداد عزیز


راسیت من با store procedure کار نکردم و اصلا نمیدونم روال کارش چطوریه؟
چطوری مقادیر به لایه منطقی ارسال میشه؟ و یا اینکه ...
این تاپیک خیلی واسه من سبک نیست!!!!

واسه سرچ داخل تالار باید با چشم دونه دونه سرچ کنم؟

mehrdad201
چهارشنبه 15 دی 1389, 12:47 عصر
خب پس باید اول یاد بگیری چطوری stored procedure رو درست کنی. سخت نیست. اما هم از نظر امنیتی و هم سرعت بسیار مهم هست

برنامه نویسی لایه ای هم تو همین فروم به زبان فارسی کلی در موردش دوستان صحبت کردن. یکم قلق داره. راه بیفتی توش دیگه حله. باور کن اونقدر هم که فکر میکنی مشکل نیست. باید لمش دستت بیاد

فقط شی گرایی رو رها نکن. سعی کن هر برنامه ای مینویسی شی گرایی توش حفظ بشه. داکیومنت هم همیشه برای توابع و کلاسهات داشته باش که فوق العاده مفیده

=========
واسه سرچ هم کافیه عبارت معماری 3 لایه رو سرچ کنی