PDA

View Full Version : به دست آوردن مقدار فیلد ها قبل از اعمال به روز رسانی



shahinghorbani
چهارشنبه 08 خرداد 1387, 19:22 عصر
من مشکلی که دارم که ظاهرش هم خیلی راحت است. من یک فرم دارم با چند تا تب که یک دکمه به روز رسانی بالای صفحه است که میشه جدول را آپدیت کرد من مشکی که دارم این است که توی چه رویدادی بنویسم که داده ها را ذخیره کنه تا وقتی که کاربر داده ها را تغییر داد و خواست آپدیت کنه بدانیم که کدام فیلد را میخواهد به روز بکند. چون در جدول مقدار یکتا وجود دارد که باید چند تا پارامتر را با هم به آن ارسال کرد.
یعنی قسمت where id=.. and name=.. and personalid=... and این قسمت را چه جوری بدونیم که قبل ازتغییرات مقدارش چی بوده.کی باید این هارا توی یک متغیر نگهداری کرد. توی لود فرم و از این جور چیزها نمیشه.

combo_ci
پنج شنبه 09 خرداد 1387, 05:38 صبح
ساده ترين كار اينه كه اول متغير هاي فرمت رو يه جا ذخيره كن....وقتي رو دكمه save كليك كرد محتويات اوون textbox ها رو با مقدار اوليه اونا مقايسه كن...اگه textbox خالي بوود مقدار اوليه اي كه ذخيره كردي رو بفرست به كد update و گرنه مقدار textbox رو بفرست

shahinghorbani
دوشنبه 13 خرداد 1387, 00:22 صبح
مشکل من همین جاست که کی اون ها را سیو کنم . یعنی از کجا بفهمم وقتی باشد که اطلاعات را از پایگاه داده خوانده است اما کاربر آن ها را تغییر نداده است یک راه که به ذهنم رسید اینه که چون همه تکست باکسهام بایند شده یک کپی ازشان داشته باشم که موقع به روز رسانی مقدار اولیه رو از کپی بگیره اما مشکل اینجاست که اون کپی اگر hide یا invisible باشد مقدارش تهی در نظر گرفته میشه...

combo_ci
دوشنبه 13 خرداد 1387, 00:34 صبح
به جواب من دقت نكردي ....توي لود فرم يك آرايه مثلا 20 تايي بگير....اطلاعات textbox ها رو ذخيره كن...آخرش كه فرم داره بسته ميشه مقدار textbox ها رو با مقدار متناظر در آرايه مقايسه كن ...اگر مساوي نبود يعني كاربر تغييرشون داده

Yama12
دوشنبه 13 خرداد 1387, 00:55 صبح
سلام
فرض کن که اطلاعات تو داخل یک datagrid view هست یا لیست باکس
به هر حال سه تا string تعریف کن برای 3 تا متغییرت
3 تا هم textbox داری که اطلاعات جدید داخل اونا وارد میشن
تا اینجا که هیچ
حالا هر کس بخواد یک سطر از اطلاعات رو ویرایش کنه باید اون سطر رو از datagrid view انتخاب کنه پس از رویداد SelectedIndexChange استفاده کن تا اطلاعات رو داخل 3 تا string بریزه
بعد هم که رویداد btn_click اجرا شد میتونی برای شرط از این 3 تا استفاده کنی

shahinghorbani
دوشنبه 13 خرداد 1387, 10:24 صبح
حرف شما درسته اما انگار منظور من را خوب متوجه نشدید . من دیتا گرید ندارم من برای هر فیلدی یک تکست باکس دارم که مثلا کاربر سرچ که کرد و سه تا رکورد به دست اومد دکمه هایی هست که میره به رکورد قبلی وبعدی به دست اومده. پس نه دیتاگرید هست که بخواهم اطلاعات را ازتوش بخونم هم اگر توی لود فرم بنویسم وقتی دکمه نکست رو بزنه کاربر اطلاعات اون تکست باکس عوض میشه در حالی که اطلاعاتی که ذخیره کردیم عوض نمیشه.

امیدوارم متوجه شده باشید چه جوریه؟
فرض کنید این دیتاست گرافیکی سی شارپ رو روی حالت دیتیل گذاشتیم و کشیدیم روی صفحه

combo_ci
دوشنبه 13 خرداد 1387, 23:34 عصر
يه sample از كاري كه ميخواي بكني بزار اينطوري ميشه يه كاري كرد.....

Yama12
سه شنبه 14 خرداد 1387, 01:17 صبح
بازم سلام
خوب از اول همین طوری توضیح میدادی
اگر نمونه بزاری که خیلی بهتره
اما قبل از اون این راه رو امتحان کن
من امتحان کردم جواب داد
شما 2 تا دکمه داری next و previous
پس تو رویداد کلیک دوتاشون مقدار داخل textbox رو در یک متغییر ذخیره کن
با این کار مقدار قبلی رو داری
البته یادت باشه اگر با currency Manager بین رکورد ها حرکت میکنی مثلا میخواهی به رکورد بعدی بری ابتدا مقدار textbox رو ذخیره کن بعد برو به رکورد بعدی

shahinghorbani
سه شنبه 14 خرداد 1387, 12:54 عصر
من یک دیتاست رو در حالت detail قرار دادم و اون رو توی صفحه کشیدم و bindingsource رو به جلو و عقب حرکت می دهم. اگر توی اون دوتا بنویسم و توی لود هر تب هم بنویسم دیگه درست میشه چون من چند تا تب دارم و وقتی مثلا توی تب اول هستی مقدار تکست باکس های تب دوم تهی است.