PDA

View Full Version : سوال: درج و حذف و آپدیت پایگاه داده توسط datagridview



mriman
سه شنبه 13 فروردین 1392, 16:30 عصر
سلام دوستان. من یک datagridview در برنامه گذاشته ام و اون رو به یک بانک اطلاعاتی متصل کرده ام
دکمه ای در فرم گذاشته و کد زیر را برای آن قرار داده ام:
("da.Update(ds, "staff
با این کار وقتی من روی datagridview داده ای رو اضافه میکنم (سطری) و دکمه را میزنم، اطلاعات به بانک اطلاعاتی هم منتقل میشه اما از دیتاگرید ویو نمی توانم سطری را حذف یا ویرایش کنم!!
چه کار باید بکنم تا بتوانم در درون دیتاگرید ویو اطلاعات بانک را حذف یا ویرایش کنم؟
لطفا کمک کنید

Yanehsar
سه شنبه 13 فروردین 1392, 17:15 عصر
سلام
منظورت اینه که با حذف و ویرایش و اضافه کردن تغییرات در دیتاگرید نمایش بده ؟

mriman
سه شنبه 13 فروردین 1392, 18:24 عصر
نه دوست من
منظورم اینه که وقتی رو دیتاگرید نمایش داد و کاربر روی همان دیتا گرید مثلا یک سطر را ویرایش کرد، با زدن دکمه ای ، تغییرات به درون دیتابیس اطلی وارد بشه. برای پاک کردن هم به همین صورت

veniz2008
سه شنبه 13 فروردین 1392, 19:03 عصر
سلام.
یه راهش میتونه واسه درج این باشه:

string s = "";
int t = dataGridView1.Rows.Count;

for (int i = 0; i < t; i++)
{
s = s + "insert into student2 values(" + dataGridView1.Rows[i].Cells[0].Value + ",'" + dataGridView1.Rows[i].Cells[1].Value + "',N'" + dataGridView1.Rows[i].Cells[2].Value + "',N'" + dataGridView1.Rows[i].Cells[3].Value + "')" + ";";
}

s = s.Remove(s.Length - 1, 1);
SqlConnection con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
cmd.ExecuteNonQuery();
con.Close();
بهتر بود درباره "درج همزمان چندین رکورد" جستجو می کردید. قبلا بارها دربارش بحث شده.
موفق باشید.

mriman
سه شنبه 13 فروردین 1392, 20:12 عصر
ممنون داداشم. اما من نمی خوام همه داده های دیتاگرید رو دوباره تو دیتابیس ذخیره کنه
من می خوام اول دیتاگرید رو با لود شدن فرم به یه سری داده پر کنم . بعد کاربر هر سطری و هر سلولی رو خواست ویرایش کنه!
برای درج راه ساده ترش همونی هست که در بالا گفتم
من مشکلم ویرایش مثلا یک سلول و یا حذف یک سطر است

veniz2008
سه شنبه 13 فروردین 1392, 20:22 عصر
شما باید به یک شکلی اون سطر رو که ویرایش کردید از بقیه سطرها جدا کنید. مثلا برای هر سطر یک چک باکس بذارید و اگر چک باکس تیک داشت اونوقت عمل مورد نظر رو انجام بدید (insert یا update ) و از بقیه سطرها چشم پوشی کنید. کافیه یه شرط if به کدهای بالا اضافه کنید.
اما در مورد حذف یک ستون یعنی چی؟. دقیقا میخواید برای حذف چکاری انجام بدید؟

mriman
سه شنبه 13 فروردین 1392, 20:31 عصر
می بخشید دو اشتباه داشتم که هر دو رو اصلاح میکنم : حذف سطر منظورم بود
پس حتما حذف سطر هم به همین صورت خواهد بود
می دونید واسه درج سطر فرمان به اون سادگی تونست کارم رو راه بندازه و فکر کردم که واسه حذف و ویرایش هم همون طوری خواهد بود.
دوست من پس commandbuilder و فرمان update و خاصیت getdeletecommand or getinsertcommdand در عمل ب چه دردی می خورن؟
من که تا به حال فایده ای تو اونا ندیدم چرا که هر وقت که نیاز به فرمان update داشتم به راحتی و با ساخت فقط یک کامندبولدر و استفاده از متد آپ دیت کارم راه افتاد؟؟!!

veniz2008
سه شنبه 13 فروردین 1392, 20:46 عصر
سنگ هم بی فایده نیست و یه روزی به درد میخوره!.
روش های پیاده سازی یک عمل متفاوته و من از دید مثبت به این قضیه نگاه میکنم چون دست برنامه نویس واقعا باز هست و شما رو محدود به یک روش نمیکنه. اولین پروژه ام رو چند سال پیش از همین commandbuilder استفاده کردم ولی اون روزها فقط من بودم که از این روش استفاده میکردم!!!! و هر سوالی در این زمینه داشتم کسی جوابگو نبود!. حالا بعد از سال ها یکی پیدا شده که بازم داره از commandbuilder استفاده میکنه ولی هیچوقت نتونستم از لحاظ مفهومی باهاش ارتباط خوبی برقرار کنم پس دنبال روش های پرکاربردتر و عمومی تری رفتم مثل همون چیزی که در بالا دیدید.
در مورد حذف، اصول کار به همون شکله ولی باید تغییراتی انجام بدید و بعد از اضافه کردن id هر سطر به یک متغیر رشته ای (هر id رو با یک کاما از هم جدا کنید نه با ";" ). در نهایت با دستور IN اون آی دی هایی رو که درون متغیر رشته ای ذخیره کردید رو حذف کنید.
موفق باشید.

mriman
چهارشنبه 14 فروردین 1392, 06:17 صبح
ممنون و خدا شما را خیر بده
فقط یه چیزی!!!
از همین دوخط آخری که فرمودید، میشه یه مثالی بیاورید؟ و اینکه منظورتون از دستور IN چیه؟
آخه من تازه کارم

mriman
چهارشنبه 14 فروردین 1392, 10:44 صبح
سلام مجدد خدمت دوست عزیزم veniz2008
مشکلم به سادگی حل شد دوست من
می دونی دقیقا با گذاشتن همین تیکه کد:
;SqlCommandBuilder cb = new SqlCommandBuilder
("da.Update(ds, "staff


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

Baharfar
پنج شنبه 05 فروردین 1395, 18:27 عصر
دوستان یک سوال؟
اگه برای دیتا گرید کدنویسی کنیم که اطلاعات دیتابیس را نشون بده بهتره یا خودمون تو دیتاگرید ستون بسازیم و فیلدهای دیتابیس را بهش بدیم؟؟؟؟؟؟؟؟؟؟؟

prans_tork
پنج شنبه 05 فروردین 1395, 22:24 عصر
دوستان یک سوال؟
اگه برای دیتا گرید کدنویسی کنیم که اطلاعات دیتابیس را نشون بده بهتره یا خودمون تو دیتاگرید ستون بسازیم و فیلدهای دیتابیس را بهش بدیم؟؟؟؟؟؟؟؟؟؟؟

سلام

من به شخصه همیشه از دیتاگرید فقط برای نمایش استفاده میکنم و insert, update, delete رو از طریق فرمای جدا و کلاسهای جدا انجام میدم.
اینطوری همه چی قابل کنترله