PDA

View Full Version : چرا دیتاگرید دیر حالیش میشه تغییر کرده ؟



Chabok
جمعه 17 شهریور 1385, 15:40 عصر
با عرض سلام خدمت دوستان محترم

من یه دیتاگرید دارم که یکی از ستون هاش بصورت CheckBox است .
حالا میخوام هنگامی که کاربر تغییرات رو انجام میده بفهمم کدوم ستون تغییر کرده .

مشکل اینجاست که هنگامی که در هر کدوم از رویدادهای مربوط به دیتاگرید
چک میکنم که آیا اون سطر تغییر کرده یا نه غلط نشون میده .

یعنی حالت قبلیش رونشون میده و هنوز نفهمیده که تغییر کرده .

من تمامی این Event ها را چک کردم . ولی هر کدوم یه سازی می زنند .
یعنی بعضی هاشون قبل از اینکه تغییرات داده بشه اتفاق میفته .
بعضی هاشون بعد از اینکه تغییرات داده بشه اتفاق میفته ولی نتیجه قبلی و غلط میده.


MouseUp
CellMouseUp
CellMouseClick
CellContentClick
CellClick
CellValuePushed
CellEndEdit
SelectionChanged
CurrentCellChanged
CellValueChanged
نمیدونم چیکار کنم .
ممنونم کمک کنید .

فایل ضمیمه هم نشانگر همین واقعیت است .
نکته : تمامی رویدادها Rem شده اند .برای تست هر کدام آن ها را از حالت ' در بیارین .

RezaJP
جمعه 17 شهریور 1385, 21:50 عصر
از هر کدام از این دوتا استفاده کنی کار میکنه
CellContentClick
CellClick

Chabok
شنبه 18 شهریور 1385, 10:24 صبح
ممنون . ولی
کار نمیده . یه نگاه به فایل ضمیمه بندازین . هر دوی این ها جواب غلط میدهند .

بازم ممنون .

RezaJP
شنبه 18 شهریور 1385, 17:29 عصر
اتفاقا من فایل ضمیمه رو امتحان کردم
اگر از CellClick استفاده کنی همون موقع که روی چک باکس کلیک می کنی فایر میشه
اگر از CellContentClick هم استفاده کنی که همون موقع که کلیک می کنی و checked یا unchecked میشه بعدش رویداد اتفاق میفته
من اول تست کردم بعد گفتم

Chabok
یک شنبه 19 شهریور 1385, 11:05 صبح
ممنون .
درسته بعد از کلیک کردن فایر میشه .
ولی نتیجه غلط میده . امتحان کنید .

بازم ممنون .

RezaJP
یک شنبه 19 شهریور 1385, 12:31 عصر
من نمی فهمم شما چه نتیجه ای میخواین بگیرین
شما می خواین کدی رو بنویسین تا وقتی روی چک باکس کلیک می کنین یا به هر صورت تغییرش میدین اجرا بشه
من تست کردم اجرا میشه
ایندکس مربوط به ردیف مورد نظر رو هم از e.RowIndex می تونین بگیرین

Chabok
یک شنبه 19 شهریور 1385, 15:50 عصر
سلام . ممنونم از اینکه همکاری میکنید .
من میدونم Event فایر میشه و کار میده .

ولی هنگامی که مقدار فیلد رو چک میکنم مقدار غلط بر میگردونه .
فیلدی که بصورت چک باکس هست رو مشاهده کنید .

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

ممنونم .

RezaJP
چهارشنبه 22 شهریور 1385, 11:59 صبح
دیگه اینقدر گفتی که منم راهشو پیدا کردم
کافیه قبل از اینکه مقدار رو چک کنی دیتاگرید رو EndEdit کنی
مثل این

Try
DG1.EndEdit()
MsgBox(DG1.Rows(e.RowIndex).Cells(e.ColumnIndex).V alue.ToString)
Catch ex As Exception
MsgBox(ex.Message)
End Try

RezaJP
چهارشنبه 22 شهریور 1385, 21:12 عصر
خواهش می کنم
امیدوارم مفید بوده باشه

Hossein Bazyan
جمعه 29 شهریور 1387, 14:16 عصر
سلام
منهم همین مشکل رو دارم
باز هم جواب نمیده منهم همه راهها رو انتخاب کرده ام و خیلی هم سرچ کردم

ALI TT
جمعه 29 شهریور 1387, 14:25 عصر
خوب چرا از رویدادهای دیتا ستی که به دیتا گرید وصل هستش استفاهده نمی کنید ؟؟؟؟؟

Hossein Bazyan
جمعه 29 شهریور 1387, 14:36 عصر
خوب چرا از رویدادهای دیتا ستی که به دیتا گرید وصل هستش استفاهده نمی کنید ؟؟؟؟؟
سلام

منظورت رو واضحتر بگو.
کاری که من کرده ام به اینصورت است که دیتاگرید با دیتاست پر میشه بعد که یکی از ستونهای گرید chekbox هستش .
حال اگر chekbox چک شده بود ستون اول و دوم با هم جمع و در ستون پنجم ذخیره و اگر انتخاب نشده بود ستون اول و سوم با هم جمع و در پنجم ذخیره شوند.
نتیجه در یک جدول دیگه ذخیره میشه نه در جدولی که با آن پر شده .