PDA

View Full Version : مشکل برگشتن روی رکورد در دیتا گرید 2005 بعد از ویرایش



Chabok
شنبه 17 تیر 1385, 13:13 عصر
با عرض سلام خدمت برنامه نویسان عزیز مخصوصا VB.net ی ها .

شما هنگامی که داده هاتون رو ویرایش میکنید چطوری بر میگردین روی همون داده ؟

من که خودم محتویات رکورد را میفرستم به یک فرم دیگه و ویرایش رو انجام میدم.
حالا ویرایش تموم شده و میخواهیم برگردیم به فرم اصلی .
پس حالا مجبوریم فرم رو دوباره Refresh کنیم تا داده های ویرایش شده رو ببینیم .
پس دوباره Dataset رو خالی میکنیم و دوباره Fill میکنیم . (هنوز به مشکل اصلی نرسیدیم)
وقتی این کار انجام شد همه چی مثل اول میشه . ولی ما میخواهیم به رکوردی که ویرایش کردیم بریم .
حالا از کجا بفهمیم رکوردی رو که ویرایش کردیم کدومه ؟ (عجله نکنید)
من توی VS 2003 از طریق BindingContext این کار را روی DataSet انجام میدادم و به رکورد مورد نظر میرفتم .
ولی حالا توی 2005 میبینم که نمیشه این کارو انجام داد و BindingContext روی دیتا گرید عمل میکنه .
یعنی اگه مثلا رکورد ما توی دیتاست سطر پنجم باشه ولی بنابه دلایلی توی دیتا گرید سطر سوم رو به خودش اختصاص داده باشه
و ما توسط BindingContext به رکورد پنجم روی دیتاست بریم دیتا گرید هم میاد و روی رکورد پنجم می ایسته . درصورتی که
در دیتا گرید آن داده در ستون سوم قرار داره .
من خودم این طور برداشت کردم : توی 2003 ، دیتاست به دیتا گرید فرمان میداد .
یعنی اگه در دیتاست به رکورد آخر هم میرفتیم کاری نداشت در کجای دیتا گریده و روی اون میرفت .
یعنی حتی ممکن بود که رکورد مورد نظر آخرین رکورد باشه ولی توسط Sort کردن دیتا گرید بر اساس یه ویژگی به رکورد اول اومده باشه .
ولی اگه توسط BindingContext به رکورد آخر میرفتیم رکورد خودش رو نشون میداد . یعنی رکورد اول روی دیتا گرید .
حالا میخوام بدونم تکنیک دوستان در این مورد چیه و برای رفتین روی رکورد مورد نظر در دیتاست از چه ترفندی استفاده می کنند .

یکی از دوستان هم از حلقه For استفاده میکردند و وقتی به رکورد مورد نظر می رسیدند روی اون می ایستادند . ولی فکر نکنم برای تعداد رکوردهای زیاد مناسب باشه ؟
ممنونم کمک کنید .

ghafoori
یک شنبه 18 تیر 1385, 13:24 عصر
والا شرمنده دوست عزیز من که از این همه توضیح شما چیزی نفهمیدم کار با بانک اطلاعاتی کمی داخل 2005 تغییر کرده و کار کمی راحتر شده شما دقیقا درکجای برنامتون این مشکل را دارید و انتظار چه قابلیتی را دارید شاید مسئله شما بدون BindingContext و غیره خیلی راحتتر حل بشه کمی درمورد اهداف برنامتون توضیح بدید شاید دوستان راه حل بهتری براتون داشته باشن البته این یک پیشنهاده دوست عزیز

Chabok
یک شنبه 18 تیر 1385, 13:59 عصر
ببینید من میخوام بعد از ویرایش به روی رکوردی برم که ویرایش شده .
متاسفانه در 2005 استفاده از bindingContext درست نیست . یعنی جواب نمیده .
من دنبال چیز خیلی ساده ای هستم و اینکه چجوری به رکوردی که یکی از فیلدهاشو میدونم برم .
همین .

ممنونم

lomir
یک شنبه 18 تیر 1385, 15:51 عصر
من یادمه قبلا در این مورد بحث شده ولی انگار پاک شده
من خودم همچین مشکلی داشتم با این کد حلش کردم
Public dposition As BindingManagerBase
بعد یک پروسجر Search درست کردم مقدار اون ای دی رکورد ویرایش شده رو می گرفت بعد در دیتا ست رفرش شده دنبالش میگشت همین
اگه دوستان راه دیگری بلدن مطرح کنن

ghafoori
یک شنبه 18 تیر 1385, 18:23 عصر
دوست عزیز به این برنامه یک نگاهی بیانداز این برنامه همیشه اخرین رکورد ویرایش شده را به شما نمایش

میدهد ببین همون چیزی است که میخواستید این برنامه دو دکمه دارد دکمه اولی اگر بزنی یکی از رکوردها

تغییر میکند دکمه دیگر اخرین رکوردی که ویرایش شده را پیدا میکند برای استفاده از این مثال شما به دیتا گرید

سطر جدیدی اضافه کن یا سطری را تغییر بده حالا با کلیک روی header دیتا گرید رکوردها را مرتب کن حالا با

زدن دکمه برنامه باید برود روی اخرین رکورد ویرایش شده دگمه اولی گذاشتم برای اینکه بگم از راه کد هم

تغییر بدی مشکلی پیش نمیاید اگر این نظرت نبوده برام بیشتر توضیح بده:چشمک:

کد4384

Chabok
دوشنبه 19 تیر 1385, 16:17 عصر
ممنونم . چیز جالبی بود .
فقط میخوام بدونم این متد Find هم از حلقه For استفاده میکنه یا نه ؟
چجوری دنبالش میگرده ؟

ممنونم

ghafoori
سه شنبه 20 تیر 1385, 13:25 عصر
من نمی دونم این متد چگونه کار میکند اما خوشحالم همچین متدی است که کار مارا راحت کنه خیلی دوست دارید بفهمید میتونید decompiler برنامه reflector را دانلود کنید و با decompile فایل system.windows.dll بفهمید متد چگونه کار میکند