PDA

View Full Version : Updata Delete in Datagridview



Mehrdad_Parsi
دوشنبه 09 دی 1392, 12:33 عصر
با سلام
دوستان با مشکلی برخورد کردم که در تالاز جستجوی زیادی کردم ولی به نتیجه نرسیدم . اگر بزرگواری کنید راهنمایی کنید ممنون میشم
یه دیتا گرید دارم که به اون اطلاعات اضافه می کنم حذف می کنم و در مواردی ادیت می کنم . می خوام بدون استفاده از دگمه و با کمک Event های Row تشخیص بدم کاربر مثلا الان ادیت می کنه با اینسرت و کد مربطه اجرا بشه بدون فشردن دگمه مربوطه
با تشکر فراوان

sagggad
دوشنبه 09 دی 1392, 14:50 عصر
سلام دوست عزیز.من دقیق متوجه منظورت نشدم اما گریدویو توی کنترل ها تکمیل ترین رویدادها رو داره:
مثلا:
رویداد CellValueChanged برای اینه که وقتی متنی در یکی از سلول های گرید ویو تایپ شد کاری انجام بشه!!
رویداد CellDoubleClick برای اینه که وقتی روی یکی از سلول ها دوبل کلیک شد کاری انجام شه.
رویداد CellClick برای اینه که وقتی روی یکی از سلول ها کلیک شد کاری انجام شه.
رویداد CellLeave برای اینه که وقتی فاکوس از روی یکی از سلول ها برداشته میشه کاری انجام شه.
ضمنا تو همه ی این ها هم میتونی از متد E استفاده کنی.

موفق باشید:لبخندساده:

Mehrdad_Parsi
سه شنبه 10 دی 1392, 10:15 صبح
با سلام
منظورم اینه که وقتی در یک سل از یه ردیف دیتا گرید : اگر برای بار اول اطلاعات وارد میشه ذخیره و اگر اطلاعات همون سل (قبلا وارد شده) ادیت میشه نتیجه ذخیره بشه با استفاده از event های خود گرید و بدون استفاده از دگمه . به عبارت دیگه هوشمندانه این کارو انجام بده
با تشکر

hmbarnamenevis
سه شنبه 10 دی 1392, 12:13 عصر
سلام;
مثالی که برای شما نوشتم برای یک جدول فروش است که فقط در آن سلول های تعداد و قیمت قابلیت ویرایش را دارند. (در صورتی که نتوانستی چند سلول خاص را برای ویرایش فعال کنی؛ مطرح کن تا برات توضیح دهم)
بعد دو رویداد در دیتاگرید داریم یکی شروع ویرایش است (Begin) و یکی انتهای ویرایش (end) است.
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.ColumnIndex == 3)//یعنی ستون شماره 3 تعداد
OldEditT = Int32.Parse(dataGridView1[3, e.RowIndex].Value.ToString());
else if (e.ColumnIndex == 4)//ستون شماره 4 قیمت
OldEditPrice = double.Parse(dataGridView1[4, e.RowIndex].Value.ToString());
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 3)//یعنی ستون شماره 3 تعداد
{
int NewT = Int32.Parse(dataGridView1[3, e.RowIndex].Value.ToString());
if (OldEditT != NewT)
//آپدیت کردن رکورد با پاس دادن کلید رکورد
}
else if (e.ColumnIndex == 4)//قیمت
{
double NewPrice = double.Parse(dataGridView1[4, e.RowIndex].Value.ToString());
if (NewPrice != OldEditPrice)
//آپدیت کردن رکورد با پاس دادن کلید رکورد
}
}

sohil_ww
سه شنبه 10 دی 1392, 12:41 عصر
سلام
دوست عزیر این برنامه شاید تقریبا اون چیری که می خوای باشه

البته درباره اپدیت کردن من فقط بهت پیشنهادشو می دم چون زمانشو ندارم بنویسم (اگه وقتم خالی بشه برات کامل ش می کنم همینجا قرار می دم )

این برنامه ای که گذاشتم فعلا میاد چک می کنه که آخرین رکورد گریدت هست یا نه اگه بود که خودش سطر جدید و اینسرت می کنه (بانک کنار برنامه نمو تونم بدم خودت یه بانک با نام school و جدول person ایجاد کن)

اگه وقت کردم برات قسمت آپدیت و دیلیتو اضافه می کنم (یه یوزر کنترلش می کنم که همه جا بتونی استفاده کنی :چشمک:)

اینم برای این می زارم که اصولش بفهمی

114656


اگه فردا تعطیل بشه فردا کاملش می کنم برات

Mehrdad_Parsi
چهارشنبه 11 دی 1392, 07:22 صبح
با سلام
از راهنمایی شما همینطور از زحمات شما ممنون . ولی واقعیت من متوجه نشدم کی عملیات اینسرت وکی عملیات آپدیت اتفاق می افته ؟ من می خوام وقتی کاربر اطلاعات جدید وارد می کننه عملیات اینسرت و وقتی عمیات بروز رسانی انجام میده عمیات آپدیت به صورت هوشمندانه انجام شه .
باز هم تشکر

matin.soft
چهارشنبه 11 دی 1392, 11:14 صبح
http://stackoverflow.com/questions/3913401/c-sharp-datagrid-automatically-write-values-to-db

headshoter
چهارشنبه 11 دی 1392, 11:54 صبح
چیزی که به نظر من میرسه :
فرض کن شما یه جدول با سه تا فیلد داری : ID,Fisrtname,Lastname .
اینا روقتی فرم لود میشه از دیتابیس میخونی ، بعد میریزیم تو گریدویو ،
بعد تور رویداد CellValueChanged میایم چک میکنیم ، اگه مقداری که توی سلول اول سطری جاری که توش تغییر ایجاد شده (که میشه همون ID) خالی بود یعنی باید Insert انجام بشه ، اگه خالی نبود هم باید اپدیت بشه دیگه ...
البته باز هم میشه روشهای دیگه ای هم انجام داد ، مثلا اگر سطر جاری اخرین سطر گریدویو باشه باید Insert بشه ...
یه کدی هم نوشتم ببین اگه جاییشو توضیح خواستی بگو ...
http://www.uplooder.net/cgi-bin/dl.cgi?key=9ccab154aa7125e06092a49830b386d6