PDA

View Full Version : مشکل در نمایش اطلاعات دیتاگرید ویو در textboxها



oranoos
دوشنبه 27 خرداد 1392, 11:04 صبح
سلام
من یک ستون به دیتاگریدم اضافه کردم که با کلیک بر روی اون اطلاعاتی رو که می خوام داخل تکس باکس ها نمایش بده از این کار برای اپدیت اطلاعات می خوام استفاده کنم برای این منظور از کد ذیل استفاده می کنم
textbox.text=datagridview.currentrow.cells().value
مشکلی که دارم نمیدونم چه اتفاقی میفته که به عنوان مثال وقتی رکورد سوم در دیتا گرید رو کلیک میکنم بخشی از اطلاعات این رکورد رو میاره و بعد پرش میکنه به سطر اول دیتاگرید و اطلاعات اونو رو نشون میده البته با کلیک مجدد روی سطر سوم بقیه اطلاعاتی که مربوط به سطر سوم هست رو نشون میده و دیگه به سطر اول نمیره ؟
چطور میتونم این مشکل رو حل کنم که با همون کلیک اول کل اطلاعات مربوط به همون سطرو بهم نشون بده؟؟؟؟؟؟؟؟
ممنون میشم در این زمینه راهنمایی بفرمایید

poorman
دوشنبه 27 خرداد 1392, 16:03 عصر
سلام

شما فقط یه ستون اضافه کردی واسه کلیک کردن ؟
به نظرت بهتر نیست کاربر روی هر cell که کلیک کرد اطلاعات همون سطر رو نمایش بده ؟
میشه توی رویداد cellclick و رویداد cellContentClick شماره سطر رو با کد زیر در بیاری
row=e.rowindex
textbox.text=datagridview.item(column,row).value


فقط حتما توی هر دو تا رویداد بنویس این کد رو ، چون رویداد cellClick واسه فضای سلول هست
و رویداد CellContentClick برای کیلک روی محتوای سلول

امیدوارم تونسته باشم مشکل رو حل کنم :)

behnam2010
سه شنبه 28 خرداد 1392, 11:15 صبح
سلام البته دوست من poorman درست اشاره کردن
من خودم هم قبلا با این مشکلات روبرو شدم . اما یه مقدار میخوام این گفته هارو تکمیل کنم . ( البته این ها جز تجربیات بدست آمده منه شاید هم برنامه نویس های قوی اینکار منو نکن به هرحال من تونستم با اینکارا مشکلموبرطرف کنم )
ابتدا یک تکست باکس با اسم id_dtgw روی فرمت بذار و کد زیر در رویداد CellClick دیتاگرید ویو وارد کن :



id_dtgw.Text = dtgw.SelectedRows(0).Cells(0).Value

Dim da As New SqlDataAdapter("select * from table_you where id='" & Val(id_dtgw.Text) & "'", cn)
table_you= منظور تیبل موجود در دیتابیس sql هست

Dim dt As New DataSet

da.Fill(dt, "tb")
برای نمایش اطلاعات دیتا گرید ویو در داخل textbox1 باید از این کد استفاده کنی :

textbox1.DataBindings.Add(New Binding("TEXT", dt, "tb.field"))
tb= اسم تیبل موجود در دیتاست
field = فیلد موجود در تیبل مورد نظر
نکته مهم اینه که اگه بخوای داخل دیتاگرید ویو دوباره کلیک کنی احتمال زیاد با این خطا روبرو میشی که :
تکست باکست نمیتونه دو تا بار بایندیگ سورس بشه
برای حل این مشکل پیشنهادم اینه قبل از اینکه کد های بالا رو تو رویداد CellClick وارد کنی کد زیر را وارد کنی :

textbox1.DataBindings.Clear

با این حال اگه موفق به انجام نشدی بگو تا یه سورس بذارم

poorman
سه شنبه 28 خرداد 1392, 11:24 صبح
سلام
بهنام جان من متوجه نشدم این کار دقیقا چه فایده ای داره ؟
یعنی اینکه خیلی کار رو طولانی میکنه
اینطور که من برداشت کردم ، همه ستون های یک سطر رو داخل یک تکس باکس نمایش میده ، درسته ؟
یا اینکه برای هر ستون باید این کد نوشته بشه ؟

behnam2010
سه شنبه 28 خرداد 1392, 11:32 صبح
سلام
بهنام جان من متوجه نشدم این کار دقیقا چه فایده ای داره ؟
یعنی اینکه خیلی کار رو طولانی میکنه
اینطور که من برداشت کردم ، همه ستون های یک سطر رو داخل یک تکس باکس نمایش میده ، درسته ؟
یا اینکه برای هر ستون باید این کد نوشته بشه ؟

نه همه ستون ها رو با هم تو یک تکست باکس نمیریزه چون اونجا توقسمت

1
textbox1.DataBindings.Add(New Binding("TEXT", dt, "tb.field"))



fieldرو با توجه به فیلد های جدولت مینوسی مثلا برای textbox2 میای اسم یه فیلد دیگرو مینوسی

راستش من قبلا با دیتا تیبل میخواستم اینکارو انجام بدم

مشکلی که برخوردم این بود که اگه در زمان ریختن اطلاعات در تکست باکس در صورت خالی بودن یک سلول در دیتابیس اصلی از اون سلول به بعد دیگه اطلاعات رو در تکست باکس های بعدیم نشون نمیداد