PDA

View Full Version : انتخاب شدن سطری خاص از datagrid



FatemehB
سه شنبه 02 اسفند 1384, 12:26 عصر
سلام

من می خوام براساس یکی از فیلدهای جدولم جستجویی روی datagrid انجام بدم و اون سطر منطبق بر شرطمو به صورت انتخاب شده نشون بدم.
فرض کنید datagrid نام و نام خانوادگی 500 نفر را نشون میده . حالا کاربر با وارد کردن یه نام بخصوص در یک TextBoxو زدن دکمه ی جستجو با سطر انتخاب شده ی اون در datagrid مواجه بشه.

ممنون میشم کمکم کنید

reza_rad
سه شنبه 02 اسفند 1384, 17:20 عصر
مشکلتون توی جستجو هست یا توی انتخاب کردن سطر؟
اگه جستجو هیت که باید بین سلولهای دیتاگرید جستجو کنید. مثلا از این استفاده کنید:


dgrdCategory.Items[dgrdCategory.SelectedIndex].Cells[1]



اگه هم انتخاب کردن باشه می تونید با این کد انتخابش کنید :


dgrdCategory.SelectedIndex=2(index);

FatemehB
چهارشنبه 03 اسفند 1384, 09:58 صبح
سلام
ممنون از توجهی که کردید.
در واقع مشکلم هر دوی این موارد هست
من می خوام جستجویی روی جدول انجام دهم و نتیجه جستجو را به صورت انتخاب شده دربیاورم
کد شما را که استفاده می کنم دیتا گرید خاصیتی به نام Items و SelectedIndex ندارد .
واقعا نمی دونم مشکل کجاست

reza_rad
چهارشنبه 03 اسفند 1384, 10:13 صبح
شاید دیتاگرید نیست. احتمالا از گریدویو استفاده می کنید؟ دات نت 2005 اینو داره.
بجای items از rows
ضمنا هم selectedindex داره و هم selectedrow

FatemehB
چهارشنبه 03 اسفند 1384, 10:26 صبح
بازم ممنون از لطفی که کردید
ولی من از دیتا گرید استفاده می کنم ودات نت 2005 هم ندارم
چنین خاصیت هایی رو که می فرمایید نداره

reza_rad
چهارشنبه 03 اسفند 1384, 10:36 صبح
اگه win application باشه که rows داره. البته selecterows,selectedcolumn,selectedcell ها readonly هستند.
اگه هم web application باشه که قبلش گفتم.
دقیقا اگه بگید دیتاگرید تون رو از چه کلاسی می سازید و تعریفش رو بایرید اینجا شاید بهتر بشه متوجه شد اشکال از کجاست.

FatemehB
چهارشنبه 03 اسفند 1384, 10:38 صبح
DataGrid dgrdCategory = new DataGrid();
ساخت دیتا گریدم اینطور است
ولی خاصیت rows نداره
ببخشید دارم وقتتونو می گیرم
میشه یه مثال بزنید

reza_rad
چهارشنبه 03 اسفند 1384, 10:49 صبح
خوب توی چه جور صفحه ای ؟ web یا win ؟
اینجوری:
system.web.ui.webcontrols.datagrid()

یا اینجوری:
System.Windows.Forms.datagridview
یا اصلا جور دیگه؟

توی design mode دنبال خاصیت rows می گردید یا توی code behind ؟

FatemehB
چهارشنبه 03 اسفند 1384, 10:58 صبح
توی code behind دنبال این خاصیت هستم

DataGrid dgrdCategory = new System.Windows.Forms.DataGrid();

صفحه win هست نه web

ali_kolahdoozan
چهارشنبه 03 اسفند 1384, 12:32 عصر
دوست من با دیتا ویو که از مباحث ای دی او هست جستجو کنید بعد سطر پیدا شده را توی گرید هی لایت کنید اگه بلد نیستید اعلام کنید من سه سوته راتون می ندازم فقط بگید توی کد وم گیرید جستجو یا نمایش در گرید در ضمن از نت 2005 استفاده کنید . حتما این کار بکنید . حتما . مخصوصا اگه winapp کار می کنید

FatemehB
چهارشنبه 03 اسفند 1384, 12:36 عصر
خیلی ممنون از توجهی که کردید
اگه میشه یه مثال بزنید واقعا لطف می کنید
می خواهم هم جستجو کنم هم سطر پیدا شده را های لایت کنم .
در مورد 2005 کار کردن هم ممنون از پیشنهادتون

سار
چهارشنبه 03 اسفند 1384, 13:57 عصر
یه سری به اینجا بزن
http://www.barnamenevis.org/forum/showthread.php?t=21630

FatemehB
پنج شنبه 04 اسفند 1384, 09:22 صبح
سلام
ممنون از لینکتون ولی من هنوز به جوابم نرسیدم
مشکل من چیز دیگری است

ali_kolahdoozan
پنج شنبه 04 اسفند 1384, 18:55 عصر
یک dataview تعریف کنید . دیتا ویو یک نما از یک قسمت از datasource شماست .
حالا درون اون جستجو کنید .
اگر می خواهید جستجو بر اساس یک فیلد که primary هست انجام بشه مرحله مرطب سازی رو بیخیال وگرنه باید اون رو مرطب هم بکنید . کدهای مرطب سازی و جستجو را الان می نویسم .


my_dv.sort(name;)
مثلا اسم dataview ما my_dv است با متد sort بر حسب فیلد name که می خواهیم یک نام را جستجو کنیم . حالا جستجو می کنیم .

int findrow= my_dv.find(textbox1.text)

if (findrow==-1){"record not found"}
else{"record found"
خوب این از جستجو اگه حاصل جستجو که یک شماره است 1- بود یعنی پیدا نشده در کد نوشتم record not found ولی اگه 1- نبود یعنی پیدا شده . این شماره با شماره رکورد شما در datagrid یا هر شئی دیگه ای یکی است حالا می توانید روی اون رکورئ توی datagrid پرش کنید

datagridview1.selectedindex=findrow
اگه دیگه dataview رو بلد نباشید بگید تا راه حل رو بگم .

FatemehB
جمعه 05 اسفند 1384, 11:16 صبح
سلام علی آقا
دست شما درد نکنه، خیلی لطف کردید .
با کمک شما مشکلم حل شد .
باز هم ممنون

ali_kolahdoozan
جمعه 05 اسفند 1384, 12:01 عصر
خواهش وظیفس

FatemehB
یک شنبه 07 اسفند 1384, 11:04 صبح
ببخشید ، گفتم دوباره تاپیک جدید نزنم همین جا سوالمو بپرسم

آیا متد Find که باعث جستجو در dataview می شود را می توان به جز نام فیلد چیز دیگری مقدار داد ؟
منظورم اینه که مثلا اگر بخواهیم براساس حرف اول فیلد جستجو کنیم آیا در متد Find این کار را می توانیم انجام دهیم یا نه ؟

ali_kolahdoozan
یک شنبه 07 اسفند 1384, 11:34 صبح
برای این کار نیازی نیست از dataviw استفاده کنید . combobox این مشگل رو بوسیله autocompelte حل کرده . ولی اگه اصرار به اصتفاده از dataview دارید یا شرایط برنامه مجبورتون کرده بله میشه . اگه خواستید بگید تا راحش رو بگم

ali_kolahdoozan
یک شنبه 07 اسفند 1384, 11:37 صبح
برای این کار نیازی نیست از dataviw استفاده کنید . combobox این مشگل رو بوسیله autocompelte حل کرده . ولی اگه اصرار به اصتفاده از dataview دارید یا شرایط برنامه مجبورتون کرده بله میشه . اگه خواستید بگید تا راحش رو بگم

FatemehB
یک شنبه 07 اسفند 1384, 11:54 صبح
ممنون میشم لطف کنید

ali_kolahdoozan
یک شنبه 07 اسفند 1384, 12:26 عصر
کلی چیز براتون نوشتم اینترنت قطع شد حالم گرفته شد .
باید از خاصیت textchange یه شئی مثل textbox استفاده کنید . متد sort را دینامیک کنید یعنی حرف اول یک رشته ملاک sort باشد و بعد درون textchange هرچی تایپ کردید یه حرف یه حرف جلو برید و جستجو رو هم از حرف اول شروع کنید برید جلو از substring یک رشته راحت می شه برای این کار استفاده کرد و خلاص

FatemehB
یک شنبه 07 اسفند 1384, 12:30 عصر
ممنون از لطفتون
ببخشید باعث زحمت شدم
امتحان می کنم
خیلی ممنون