PDA

View Full Version : اشکال در update شدن datagrid



angel_692
دوشنبه 27 اسفند 1386, 10:17 صبح
سلام،
در برنامه ام پس از انتخاب یک سطر از datagrid آن رابرای ویرایش انتخاب می کنم . پس از انجام عمل ویرایش که پنجره حاوی data grid نمایش داده می شود ، بجای ویرایش سطر انتخاب شده یک سطر جدید به datagrid اضافه می شود و سطر انتخابی همچنان باقی می ماند.
اگر پنجره مربوطه را ببندم و دوباره باز کنم سطر حذف می شود و ظاهرا مشکلی وجود ندارد.
من می خواهم بدون اینکه پنجره را ببندم datagrid بروز شود.
لطفا من را راهنمایی کنید.

Ghasem Dehghani
دوشنبه 27 اسفند 1386, 18:17 عصر
دوست عزیز سلام !
به احتمال زیاد شما برای جدولتون فیلد کلید رو مشخص نکردین و کد های تولید شده اتوماتیک توسط ویژوال استودیو فقط کدهای Insert رو تنظیم کرده .
برای رفع این مشکل ابتدا یک فیلد کلید برای جدول خودتون تعریف کنید حتی AutoIncreament هم بود مشکلی نداره اون وقت دوباره Sqldataadaptor قبلی و همین طور dataset اون رو پاک کنید و دوباره یک dataAdaptor را به برنامه اضافه کنید و تنظیمات اون رو انجام بدین و از اون یک Dataset جدید Generate کنید .
بعد میتونین یک متغیر public در فرم ویرایش تعریف کنید مثل


Public Static Int Code;

اون وقت قبل از نمایش فرم ویرایش مقدار فیلد کلید خودتون رو داخل این متغییر قرار بدین و برای فرم ویرایش ارسال کنید .
در رویداد Shown فقط رکورد مورد نظر تون رو مطابق شکل زیر انتخاب نموده و در حالت ویرایش قرار بدین :


Sqlconectio.Open();
SqlDataAdaptor1.SelectCommant.CommandString=" Select * From MyTable Where Code="+Code.ToString()
SqlDataAdaptor1.Fill(Dataset1)
Dtatset1.Mytable[0].BeginEdit()

در دکمه ذخیره اطلاعات هم کد زیر رو بنویسید :


Dtatset1.Mytable[0].EndEdit()
SqlDataAdator1.Update(Dataset1)

موفق باشید .

angel_692
شنبه 10 فروردین 1387, 09:02 صبح
الان مشکل اضافه شدن سطر اضافی حل شده ولی همون سطری رو که برای ویرایش انتخاب می کنیم فیلدهای غیر کلید رو update شده نشون میده ولی فیلدهایی که کلید هستند رو update شده نشون نمیده و باید یکبار فرم را بست و دوباره باز کرد تا سطر ویرایش شده درست نمایش داده شود.
لطفا من رو راهنمایی کنید. واقعاً ضروری هست.

hdv212
شنبه 10 فروردین 1387, 13:21 عصر
بعد از عملیات Insert یا Update یا Delete، یکبار دیگه اطلاعات رو از دیتابیس بخون، قبلش هم DataSet یا DateTable ات رو Clear کن.