PDA

View Full Version : جستجو و نمایش نتایج در گرید ویو



mahboube
دوشنبه 09 آذر 1388, 11:03 صبح
سلام دوستان
من می خوام با زدن هر حرف(توی textbox)،دیتابیس جستجو بشه (دستور like)و نتایج توی GridView نمایش داده بشه.
از هرکس بتونه راهنمایی کنه ممنون می شم.
یا حق

mehdi.mousavi
دوشنبه 09 آذر 1388, 11:20 صبح
سلام دوستان من می خوام با زدن هر حرف(توی textbox)،دیتابیس جستجو بشه (دستور like)و نتایج توی GridView نمایش داده بشه. از هرکس بتونه راهنمایی کنه ممنون می شم. یا حق

سلام.
ابتدا خدمتتون عرض کنم که سوال رو Bold هم ننویسید، بقیه می تونن بخونن و بهش پاسخ بدن. (و البته نظم سایت حفظ خواهد شد).

سپس، در مورد TextBox... چیزی که شما دنبالش هستید اصلا کارآمد نیست. چون اینطوری که شما می گید، هر بار که یک کاراکتر زده بشه، یه Round-Trip بین Client و سرور خواهیم داشت. در نتیجه برای یک کلمه 6 حرفی بعنوان نمونه، شما باید 6 بار بین Client و سرور اطلاعات رو رد و بدل کنید و .... این اصلا کارآمد نیست.

اما اگر در انجام این کار اصرار دارید، میتونید این کارو کنید. سمت Client کد Javascript ای بنویسد و کنترل اون TextBox رو بعهده بگیرید. به این ترتیب که هر وقت کلیدی در اون TextBox زده شد، Timer ای رو راه بندازید و مثلا 200 میلی ثانیه صبر کنید تا شاید کاربر کاراکتر دیگه ای رو وارد کنه. در این صورت تایمر رو دوباره reset می کنید تا 200 میلی ثانیه از ابتدا شمارش بشه. وقتی timer مورد نظر expire شد، شما می تونید یه Postback به سرور داشته باشید و باعث Call شدن textbox_Changed سمت سرور بشید. سپس سمت سرور و در این handler، میتونید Data های مورد نظرتون رو Query کرده، GridView رو Update کرده و اطلاعات رو به Client بر گردونید. اینطوری ممکنه برای Query کردن همون کلمه 6 حرفی، یکی دو بار Postback اتفاق بیفته که خوب خیلی بهتر از حالت اول هستش.

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

موفق باشید.

Mostafa_Dindar
دوشنبه 09 آذر 1388, 12:00 عصر
سلام .
وقتي تو گوگل جستجو ميكنيد بر اساس كليدواژه هاي شما چندين كليد واژه ديگه هم به شما پيشنهاد ميشه .
يا هنگام تگ نوشتن براي ايجاد تاپيك (همين سايت) يكسري كليدواژه به شما پيشنهاد ميشه كه البته با گوگل كمي متفاوته .
طرز كار اونها به چه صورت هست ؟
مرسي

Behrouz_Rad
دوشنبه 09 آذر 1388, 13:34 عصر
Google Suggest از AJAX استفاده می کنه و همون طرحی رو پیاده سازی کرده که mehdi6755 اشاره کرد: ایجاد تاخیر برای ارسال درخواست به سرور با انتظار برای دریافت کلید بعدی به منظور کاهش تعداد ارسال درخواست و افزایش کارایی.

موفق باشید.

mahboube
پنج شنبه 12 آذر 1388, 16:14 عصر
درود
دوست خوب مهدی بابت راهنماییت خیلی متشکرم.
این تایمرو با آژکس میشه گذاشت ولی مشکل من اینه که رویداد text change تا زمانی که اینتر نشه یا یه رویداد دیگه اجرا نشه ،اجرا نمی شه،با این مشکل چیکار می تونم کنم؟(بابت کلید هم سفارش دهنده!برنامه اینو خواسته)
باز هم سپاسگذارم.
سبز باشی و سربلند

mehdi.mousavi
پنج شنبه 12 آذر 1388, 16:42 عصر
درود
دوست خوب مهدی بابت راهنماییت خیلی متشکرم. این تایمرو با آژکس میشه گذاشت ولی مشکل من اینه که رویداد text change تا زمانی که اینتر نشه یا یه رویداد دیگه اجرا نشه ،اجرا نمی شه،با این مشکل چیکار می تونم کنم؟(بابت کلید هم سفارش دهنده!برنامه اینو خواسته)
باز هم سپاسگذارم. سبز باشی و سربلند

سلام.
شما با JavaScript میتونید از keydown event مطلع بشید (وقتی که کلیدی توی TextBox زده میشه این event سمت Client برای اون TextBox فراخوانی میشه) بعد توی Handler مربوطه تعدا کاراکترهای فعلی وارد شده در TextBox رو ببینید، اگر 3 تا بود، اونوقت با AJAX اطلاعات مورد نظرتون رو از طریق یک Web Service (یا هر تکنولوژی Server Side دیگه) دریافت کرده و به کاربر نشون بدید.

موفق باشید.

mahboube
پنج شنبه 12 آذر 1388, 16:51 عصر
سلام.
شما با JavaScript میتونید از keydown event مطلع بشید (وقتی که کلیدی توی TextBox زده میشه این event سمت Client برای اون TextBox فراخوانی میشه) بعد توی Handler مربوطه تعدا کاراکترهای فعلی وارد شده در TextBox رو ببینید، اگر 3 تا بود، اونوقت با AJAX اطلاعات مورد نظرتون رو از طریق یک Web Service (یا هر تکنولوژی Server Side دیگه) دریافت کرده و به کاربر نشون بدید.

موفق باشید.
بازم ممنون
من جاوااسکریپت زیاد کار نکردم(یعنی هروقت لازم بوده،کپی کردم!).
اگه یه جایی که من بتونم در مورد این که گفتین بخونم،سراغ داشته باشید و بهم بگین ممنون می شم.
در ضمن یه مشکل دیگه هم دارم در مورد کار کردن رو گرید ویو با کلید اینتر و DEL ،اگه تو اینم کمک کنین بازم ممنون می شم.
سبز باشی و سربلند

mahboube
دوشنبه 16 آذر 1388, 18:16 عصر
از همه دوستانی که راهنمایی کردن ممنونم.
اگه یه تایمر آژاکس بذاریم مشکل حل می شه.کاره انجام می شه ولی focus تکست باکس عوض می شه.که باید حلش کرد.بازم ممنون.
سبزباشد و سربلند:لبخندساده: