PDA

View Full Version : سوال: یک مشکل کوچولو اما حیاتی تو سرچ



jboloori
دوشنبه 23 دی 1392, 22:45 عصر
سلام دوستان.ی مشکل واسم تو قسمت سرچ تو دیتا بیسم بوجود اومده.تو گوگل و همین سایتم زیاد گشتم و راههای مختلفی رو تست کردم ولی ب نتیجه نرسیدم.در موردش شرح میدم امیدوارم یکی کمکم کنه.

ببینید فرض کنید ی فرم دارم ک توش دوتا لیبل هست واس نمایش نام و نام خانوادگی رکورد جاری (البته اینارو با مشخصه تکست دیتابایندینگ به فیلد مربوطه وصل کردم ک وقتی تو گرید ویو جابجا میشم اینا تغییر میکنن)
یه گرید ویو دارم ک به بانکم متصله

سورسی ک هم گرید ویو و هم لیبل ها به متصلن اسمش اینه tblhesaabhabindingsource

حالا ی دونه تکست باکس گذاشتم واس جست و جو و نشون دادن داده های مورد نظر تو گرید ویو (فرض کنید بر اساس نام خانوادگی می خوام سرچ کنم.

ازین کد استفاده کردم:
Dim dt As New DataTable
Dim da As New SqlDataAdapter("select * from tblhesaabha where lname like N'%" & RadTextBox1.Text & "%'", ettesaal)
da.Fill(dt)

RadGridView1.DataSource = dt


درست کار میکنه و عبارتی رو ک تو تکست باکسم مینویسم رو در صورت وجود سرچ میکنه

حالا مشکل اینجاس:
تا قبل اینکه از جست و جو استفاده کنم اگه تو داده های گرید ویوم جا به جا شم اون دو لیبل نام و نام خانوادگیم هم با جابه جایی تغییر میکنه.به محض اینک از جست و جو استفاده میکنم بعد از اون با جا به جایی بین رکورد ها دگه دو لیبل تغییر نمیکنن.

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

مرسی :بوس:

sagggad
دوشنبه 23 دی 1392, 22:57 عصر
با سلام
شما میخوای حتما جستجو داخل بانک و با دستورات ADO.NET انجام بشه؟
اگه بخوای من میتونم بهت کد سرچ در گریدویو رو بدم

jboloori
دوشنبه 23 دی 1392, 23:12 عصر
مسلما ado.net

خب اگه منو ب جوابم میرسونه چرا ک نه.

systam
دوشنبه 23 دی 1392, 23:16 عصر
سلام دادا
اینم یک نمونه مثال البته با اکسسه کار تبدیل به sql خودت زحمتشو بکش

یا علی

jboloori
سه شنبه 24 دی 1392, 00:12 صبح
ممنون.عالی بود اما دیتاگرید ویو رو با ویزارد گرافیکیش به دیتابیس متصل کردم اما شما با کد نویسی اینکارو کردید و همون اول کار دیتاسورسشونو dt قرار دادید.
من دیتاسورس فعلیمم دارم ک لیبلام و گردم ازون استفاده میکنن بعدش تو سرچم واسه اینکه بعد سلکت کردن محتوا اونا رو نشون بده تو گرید ویو مجبور شدم ی datatable با نام dt تعریف کنم.

در واقع الان مشکلم همون دوتا لیبل هستش.با کد نویسی بایندینگشونو روی dt تنظیم میکنم ارور میده
قبلش روی tblhesaabhabindingsource تنظیم بوده

sagggad
سه شنبه 24 دی 1392, 00:18 صبح
ببینید در این مثال ما یه تکس باکس داریم به اسم TXTName که در اون نام خانوادگی رو وارد میکنیم و یک دیتاگرید متصل به بانک به اسم DataGridView1 که جستجو در اون انجام میشه(در گرید ویو)

For i = 0 To DataGridView1.Rows.Count - 2
If DataGridView1.Rows(i).Cells(0).Value.ToString = TXTName.Text Then
DataGridView1.Rows(i).Selected = True
End If
Next

شما باید به جای (Cells(0 به جای 0 شماره ستون نام خانوادگی را بنویسید
در خط دوم هم اگر پیدا شود آن را در حالت انتخاب قرار میدهد
اگر هم میخواهید نام را در داخل یک تکس باکس نشان دهد بایستی در خط دوم از این کد استفاده کنید:
Txt2.Text = Datagridview1.Rows(i).Cells(1).value
شما باید به جای (Cells(1 به جای 1 شماره ستون مورد نظر رو بنویسید(جهت نمایش)
موفق باشید

jboloori
سه شنبه 24 دی 1392, 00:31 صبح
مرسی این کد کارش ی چیز دیگس

systam
سه شنبه 24 دی 1392, 00:43 صبح
ممنون.عالی بود اما دیتاگرید ویو رو با ویزارد گرافیکیش به دیتابیس متصل کردم اما شما با کد نویسی اینکارو کردید و همون اول کار دیتاسورسشونو dt قرار دادید.
من دیتاسورس فعلیمم دارم ک لیبلام و گردم ازون استفاده میکنن بعدش تو سرچم واسه اینکه بعد سلکت کردن محتوا اونا رو نشون بده تو گرید ویو مجبور شدم ی datatable با نام dt تعریف کنم.

در واقع الان مشکلم همون دوتا لیبل هستش.با کد نویسی بایندینگشونو روی dt تنظیم میکنم ارور میده
قبلش روی tblhesaabhabindingsource تنظیم بوده

من دوست همیشه از طریق کد نویسی کارم رو پیش ببرم ویزارد رو میزارم برای روز مبادا
برنامه رو ضمبمه کن تا بهتر بشه روش نظر داد

Naghibi
سه شنبه 24 دی 1392, 08:42 صبح
سلام
شما می تونی از filter روی tblhesaabhabindingsource استفاده کنی.


tblhesaabhabindingsource.filter="lname like N'%" & RadTextBox1.Text & "%'"

این جوری دیگه binding هم لازم نیست تغییر کنه

jboloori
سه شنبه 24 دی 1392, 13:50 عصر
من دقیقا اینو مینویسم syntax میده

TblhesaabhaBindingSource.Filter = "fname like N'%" & RadTextBox1.Text & "%'"

اینم ارورش
Syntax error: Missing operand after ''%2%'' operator.

jboloori
سه شنبه 24 دی 1392, 14:13 عصر
سلام دوستان نمونه مشابه برناممو اتچ کردم تا بهتر بشه کمکم کنید.

یادآوری کنم جست و جو مشکلی نداره و دیتا گرید فیلتر میشه براحتی.
مشکل اینجاس:

قبل سرچ اون دوتا لیبل نام و نام خانوادگی ک با جابجایی تغییر میکنن درس کار میکنن اما بعد جست و جو ک dt وارد عمل میشه اونا دیگه کار نمیکنن.

یا یجوری بعد سرچ بایندینگ اون دوتا میخوام عوض شه و از dt پیروی کنن

یا جست و جو رو ب نحوی دیگه انجام بدم ک مشکلی پیش نیاد


115361

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

ممنون دوستان:لبخندساده:

systam
سه شنبه 24 دی 1392, 23:47 عصر
سلام
ببین چطوره

jboloori
چهارشنبه 25 دی 1392, 00:48 صبح
مرسی داداش کارمو راه انداخت