PDA

View Full Version : سوال: textbox و datagridview



شرلوک هلمز
چهارشنبه 12 مهر 1391, 19:37 عصر
من یک datagrideview دارم که به table یک dataset بایند شده و چندتا textbox هم دارم که آنها را هم بایند کردم
حال وقتی یک سطر از datagridview را انتخاب میکنم در textbox نمایش داده می شود من میخواهم اطلاعات داخل textbox را تغییر دهم و با متد updata یک adapter تغییرات را در دیتا بیس و datatable ثبت کنم . اگر اینکار را داخل خود datagridview انجام دهم تغییرات ثبت می شود اما وقتی تغییرات را داخل textbox انجام میدهم ثبت نمی شود لطفا کمک کنید

Arash_janusV3
چهارشنبه 12 مهر 1391, 23:49 عصر
برای تغییرات می بایست مستقیما از textbox مقدار بگیرید و جدول رو به روزرسانی کنید

Arash_janusV3
چهارشنبه 12 مهر 1391, 23:49 عصر
ثبت تغییرات در جدول با استفاده از DataReader (http://barnamenevis.org/showthread.php?346847-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%85%D8%AB%D8%A7%D9%84%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C&p=1542358&viewfull=1#post1542358)
اعمال تغییرات یک رکورد در جدول (http://barnamenevis.org/showthread.php?346847-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%85%D8%AB%D8%A7%D9%84%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C&p=1562827&viewfull=1#post1562827)
ثبت تغییرات در dataGridView (http://barnamenevis.org/showthread.php?346847-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%85%D8%AB%D8%A7%D9%84%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C&p=1566183&viewfull=1#post1566183)

kurd_programming
پنج شنبه 13 مهر 1391, 00:00 صبح
دوست عزیز شما باید تکس باکسهایی که می خوای جهت ویرایش کردن استفاده کنی باید در داخل دستورات آپدیت اونها رو قرار بدی یا به اصطلاح خودم فراخوانی کنی که update بشه ...
شبیه این کد
s3="update customer set customername=@a1,address=@a2,tel=@a3,regular=@a4 where customername='"+textBox1.Text+"'";

شرلوک هلمز
پنج شنبه 13 مهر 1391, 22:00 عصر
از توجه دوستان ممنون
اما کدهای را که گذاشته اید را تقریبا میدانستم شاید من منظورم را درست بیان نکردم .
ببینید در حالتی که با دیتا گرید ویو کار میکنیم میتوانیم چند سطر را داخل ان عوض کنیم و سپس تمام آنرا یک باره updata کنیم طبیعتا بعد از updata احتیاجی به استفاده از متد fill وجود ندارد چون متد updata تمام تغییرات صورت گرفته در دیتاگریدویو را ثبت میکند .
حالا من میخواهم همین کار را با استفاده از textbox انجام دهم یعنی برروی یک سطر از دیتاگریدویو کلیک میکنیم اطلاعات ان در textbox نمایش داده میشود ان اطلاعات را تغییر میدهیم سپس بدون اینکه دکمه ی updata را بزنم بر روی یک سطر دیگر کلیک میکنم واطلاعات ان سطر را نیز تغییر میدهیم حالا دکمه updata را میزنیم تا تمام تغییرات یکباره انجام شود
البته من تست کردم و متوجه شدم که در این حالت فقط سطر آخری که آنرا تغییر داده ایم ذخیره نمی شود ظاهرا با کلیک برروی یک دیتاگرید ویو رویدادهایی به طور اتوماتیک راه اندازی میشود که باعث ثبت تغییرات قبلی در datatable میشود و به همین خاطر است که سطر آخر ذخیره نمیشود
حتی اگر من بعد از تغییر سطر آخر بازهم برروی یک سطر دیگر کلیک کنم و البته انرا نخواهم تغییر بدهم برنامه درست کار میکند و تمام تغییرات ذخیره میشود .
من حتی با کد رویداد کلیک را بروی دیتا گرید ویو را شبیه سازی کردم و برنامه درست کارکرد اما به نظرم اینکار منطقی نیست .
به هرحال ممنون از توجه دوستان
اگر کسی میداند با انجام کلیک برروی یک دیتا گرید ویو چه اعمالی بطور اتومات بر روی ان انجام میشود -مثلا ممکن است سطر مورد نظر به صورت اتومات اماده ثبت تغییرات شود چیزی مثل Rows.beginEdit() - لطفا من را راهنمایی کند

شرلوک هلمز
جمعه 14 مهر 1391, 17:56 عصر
مشکل با استفاده از دستور زیر حل شد

int currentRowIndex = dataGridView1.CurrentRow.Index;
DataRow currentRow = myTable.Rows[currentRowIndex];
currentRow.EndEdit();



متد EndEdit بعد از کلیک برروی یک سطر جدید برای سطر قبلی راه اندازی می شود