PDA

View Full Version : پیدا کردن یک مقدار در گراید ویو با متدهای خودش



rezaei manesh
پنج شنبه 12 بهمن 1385, 08:30 صبح
سلام
من الان وقتی می خوام تو گراید ویو جستجو کنم با حلقه اینکار رو می کنم

حالا من یک تکست باکس دارم که وقتی اطلاعات درون اون نوشته می شه در رویداد textchange اون من باید اولین مقدار (هرقسمتی ازمتن یک ستون گرید) رو پیدا کنم اما برای اینکار جالب نیست هر حرفی رو که زده می شه یکبار یک حلقه اجرا بشه
من نتونستم متدی از گراید ویو برای عمل جستجو پیدا کنم قبلا توی گراید 2003 بود اما با فارسی مشکل داشت
آیا گراید ویو متدی برای این کار داره؟
اگه داره با فارسی مشکل نداره؟ یه مثال اگه می شه

programmermp
پنج شنبه 12 بهمن 1385, 09:11 صبح
سلام

حامد جان اسم متد سرچی که گفتی تو ی2003 چی بود من هرچی تو msdn و متدهای

دیتا گراید ویو گشتم چیزی واسه سرچ کردن پیدا نکرم

فکر کنم آخر سر باید از همون روش قبلی (استفاده از حلقه) استفاده کنی

با تشکر

ali_kolahdoozan
پنج شنبه 12 بهمن 1385, 09:15 صبح
اگر دیتابیس داری از query استفاده کن . همچین متدی ظاهرا که نیست

rezaei manesh
پنج شنبه 12 بهمن 1385, 09:15 صبح
الان راستش یادم نیست چون من اون اولا اونو امتهان کردم و بعد دیگه چون مشکل داشت از اون استفاده نکردم اما فلکس گراید هم همون مشکل رو داشت که اسم متدش find بود فکر کنم.
آره من خیلی گشتم اما چیزی نتونستم پیدا کنم به نظر من که خیلی عجیبه مایکرو سافت متد به این مهمی رو در گراید ویو نگذاشته باشه؟!

نه بابا اون حلقه که فکر کنم بهتر از کویری باشه یعنی بعد هر تغییر تو تکست باکس من به بانک وصل بشم و ...؟
اگه واقعا نباشه باید یا حلقه رو بهینه کنیم
یا از یه روش دیگه استفاده کنیم مثل این که اطلاعات رو در دیتاویو بریزیم و اونجا پیدا کنیم اما مشکل اینه که اونجا که چیدا کردیم حالا چه طوری رکورد متناظرش رو نشون بدیم
نظر شما چیه؟
در ضمن من اطلاعات رو از طریق دیتاست پر می کنم

ali_kolahdoozan
پنج شنبه 12 بهمن 1385, 09:27 صبح
اتفاقا اگر پیدا کنی درون دیتا ویو پیدا کردن رکورد متناظر سادس . اما اگر کل کار رو ببری توی دیتابیس بکنی بهتره . چون اونجا مثلا like داری که خیلی عالی عمل میکنه . در ضمن textchange رو روش بیشتر فکر کن space ها رو هم اونوقت سرچ میکنه . در ضمن بدون کوئری برای من یک سوال پیش میاد مثلا رکورد شماره 1000 پیدا میشه که اصلا این رکورد اون پایین مایین هاست که پیدا نیست . حالا با کوئری میشه اون رو توی گرید به صورت فیلتر شده نشان داد اما با روش شما اون فقط پیدا میشه ولی کسی چیزی نمی بینه . البته راه حل درست شدن داره اما زیاد نمی ارزه . اگر برنامت winapp و تک کاربرس دیگه خودت رو اذیت نکن همون کوئری رو برو و خلاص

rezaei manesh
پنج شنبه 12 بهمن 1385, 09:45 صبح
نه برنامه ویندوزی اما یه برنامه بزرگ و تحت شبکه هستش در ضمن نمی خوام فیلتر کنم با فیلتر که کاری نداره در ضمن رکورد هزار که اون پایین هاست رو من سلکت می کنم و اسکرول رو می برم اونجا که کاربر می تونه اونو ببینه از این بابت اصلا مشکلی نیست 2 خط کد بیشتر نیست در ضمن من از like باید استفاده کنم
با خود دیتا ویو گراید ویو نمی شه find کرد؟

programmermp
پنج شنبه 12 بهمن 1385, 09:49 صبح
سلام علی آقا

درسته به نظر من هم Query راه فوق العاد ه ای هست واسه این کار

من هم هر چی فکر کردم راهی بهتر از این پیدا نکردم

در مورد انتخاب رکورد 1000 هم تو ی دیتا گراید می شه از متد selected سلول ها استفاده

کرد که همونطور که گفتید به کدنویسیه زیادش نمی ارزه

در ضمن یه سئوال واسه من پیش اومد

منظورتون رو اگه درسته فهمیده باشم از Query باید همون دستو ر select با شرط و استفاده

از like باشه درسته

اگه درسته بر فرض که ما از دیتاست 1 استفاده می کنیم برای پر کردن دیتا گراید ویو

اگه بخواهیم از همون به عنوان query استفاده کنیم که بعد دیتاست با اطلاعات جدید پر

می شه بنابراین فکر کنم باید از دو تا دیتا ست استفاده کنیم درسته یا نه

چون اگه از یکی استفاده کنیم اونوقت بعد از سرچ اطلاعات اولیه از بین می ره و اطلاعات

سرچ شده باقی می مونه

در مورد رویداد textchanged مربوط به تکست باکس که می گید space رو سرچ می کنه

می شه از کد زیر براش استفاده کرد



trim(replace(textbox1.text," ",""))

با کد بالا اول می گرده هر چی فضای خالی بین حروف بود رو حذف می کنه بعد با دستور

trim هم فضای خالی دو طرف متن رو حذف می کنه اینطوری دیگه مشکل space هم نداریم




در ضمن رکورد هزار که اون پایین هاست رو من سلکت می کنم و اسکرول رو می برم اونجا که کاربر می تونه اونو ببینه از این بابت اصلا مشکلی نیست 2 خط کد بیشتر نیست


حامد جان چطوری اسکرول رو می بری روی قسمت مورد نظر

من انتخاب سلول مثلا رکورد 1000 رو انجام دادم ولی اسکرولش رو نمی دونم اگه لطف کنی

بگی ممنون می شم

با تشکر

ali_kolahdoozan
پنج شنبه 12 بهمن 1385, 09:50 صبح
نه . در این حد که من می دونم نه . چون این دات نت سر و ته نداره . اما کامپوننت گرید با این کارها سراغ دارم اگر مایل به کار با کامپوننت باشی میشه باش خوب کار کرد