PDA

View Full Version : سوال: مشکل در ثابت ماندن محتوای datatable هنگام تغییر اطلاعات مشابه در دیتاگریدویو



hossein16
جمعه 24 شهریور 1391, 17:25 عصر
سلام
من در حال نوشتن قسمت ویرایش فاکتور هستم.
مشکلم اینجاست که:
هنگامی که کاربر شماره فاکتور مورد نظر را وارد کرد مشخصات فاکتور در فرم جدید نمایش داده می شود (با تمام کالاهای ان)
به این صورت:

dtKalaha = kala.Select_on_factor_frosh(ID_Factor);
listaghlam.DataSource = dtKalaha;

از آنجا که کاربر قصد ویرایش را دارد ، باید اطلاعات فاکتور اولیه را ذخیره کنم(برای محاسبه اختلافات دو فاکتور قدیم و ویرایش شده)
با وجود اینکه همان اول محتویات فاکتور را در جدول dtKalaha می ریزم ولی در آخر که آن را می خوانم اطلاعات جدید که در دیتا گریدویو هستند در آن جای می گیرند و اطلاعات فاکتور قبلی از دست می روند.
هر کار کردم نتونستم مشکل را حل کنم.
لطفاً کمک کنید.
با تشکر

hossein16
سه شنبه 28 شهریور 1391, 23:14 عصر
لطفاً یک نفر راهنمایی کنه
نیاز ضروری دارم.
اگر هم سوال مفهوم نیست بگید تا بیشر توضیح بدم.

ali_habibi1384
چهارشنبه 29 شهریور 1391, 07:54 صبح
خب باز من يه روش ديگه از خودم دارم:
موقع لود شدن فيلد كليد اقلام فاكتور رو توي آرايه ميريزم. در آخر سر اونهايي كه در ديتا تيبلم وجود دارند يعني اونهايي هستند كه آپديت شدند پس اونارو Upadate ميكنم، اگر وجود نداشتند پس در پاك شدن بنابراين Delete ميكنم و اگر اونيكه هنوز id نداره و يا در ديتا تيبل هست اما در آرايه ام نيست فيلد جديد هست Insert ميكنم.منظور آقاي Mafaman2003 (http://barnamenevis.org/member.php?71297-mafaman2003)هم فكر كنم همين مقايسه بوده باشه. حالا من باآرايه گفتم ايشون از ديتا تيبل گفتن.

hossein16
پنج شنبه 30 شهریور 1391, 00:56 صبح
DataTable dtKalahaOld = kala.Select_on_factor_frosh(ID_Factor);
DataTable dtKalahaNew = dtKalahaOld.Clone();
listaghlam.DataSource = dtKalahaNew;
با ویرایش کاربر dtKalahaNew بروز میشه و در آخر با لیست قدیم dtKalahaOld میتونید مقایسه کنید.
با این دستور هم مشکلم حل نشد.
یعنی اینکه با دستورKalahaOld.Clone مقادیر جدول در dtKalahaNew ذخیره نمیشود:متعجب:
مشکل اصلی خودم اینجا بود که خواستم فاکتورقبلی را در dtKalaha ذخیره و فاکتور جدید را از datagridview بخوانم اما نمی دانم چرا به محض اینکه دادها در datagridview تغییر می کنند، دادهای دیتاتیبل dtkalaha هم در همان لحظه تغییر می کنند و به این دلیل دخیره فاکتور قبلی در dtkalaha بی نتیجه می ماند.

این هم برای من مشکل جدی بوجود آورده به طوری که واقعاً نمی دانم چکار کنم.
لطفاً راهنمایی کنید.
با تشکر

ali_habibi1384
پنج شنبه 30 شهریور 1391, 07:33 صبح
به محض اینکه دادها در datagridview تغییر می کنند، دادهای دیتاتیبل dtkalaha هم در همان لحظه تغییر می کنند و به این دلیل دخیره فاکتور قبلی در dtkalaha بی نتیجه می ماند.


دقيقا همينطوره كه ميفرماييد چون شما گريدتونو به همون ديتا تيبل متصل كرديد بنابراين اطلاعات از يك منبع استخراج ميشه. جالب اينجاست كه چنانچه شما حتي اطلاعات رو در چند ديتاتيبل ديگه هم بريزيد كه بعدا بخوايد استفاده كنيد بازهم با تغيير محتويات گريد اونا تغيير ميكنه:چشمک:
من از روش استفاده از آرايه كه در پست قبل توضيح دادم استفاده كردم و مشكلي هم ندارم.يك مزيت بزرگش هم تينه كه براي نگهداري اطلاعات از آرايه استفاده كردم و نه از ديتاتيبل . خوبيش اينه كه اطلاعاتي كه نياز ندارم بيخود لود نميشه.