PDA

View Full Version : سوال: استفاده از Datagried



mahallat
یک شنبه 24 خرداد 1388, 21:49 عصر
با سلام
وقتی با ویزارد من greidرا به دیتا بیس وصل می کنم و binding navagate را هم به اونا وصل می کنم همه تغییرات در greid را که وارد می کنم در دیتا ست ذخیره ولی وارد دیتابیس نمی شه ؟باید چه کدی بنویسم تا okبشه؟
با تشکر از زحمات شما

pesar irooni
دوشنبه 25 خرداد 1388, 01:57 صبح
خوب معلومه شما باید با استفاده از یه table adapter اطلاعاتت رو وارد database کنی. میدونم منظور شما دقیقا چی هست که بطور مستقیم تغییرات رو دیتابیس اعمال بشه ولی فک نکنم چنین امکانی وجود داشته باشه.

farhud
دوشنبه 25 خرداد 1388, 07:03 صبح
پرسشت پرسش من هم بود ولي هرچه وقت گذاشتم و جستجو كردم چيزي پيدا نكردم. نه در سايتهاي فارسي و نه در سايتهاي انگليسي.
فكر كنم بهتر باشه از button و كد نويسي استفاده كني.

mahallat
دوشنبه 25 خرداد 1388, 12:22 عصر
با سلام
ببینید من می خواهم وقتی با ویزار به گرید وصل می شوم و اطلاعات جدول را نمایش میده بتونم با خود گرید کل اطلاعات را ویرایش و یا اظافه کنم که میشه این کارا کرد ولی وقتی که اضافه یا ویرایش می کنم بعد از بستن فرم و اجرا کردن مجدد آن تغییرات من اعمال نشده است

NewFoxStudent
دوشنبه 25 خرداد 1388, 12:42 عصر
این لینک رو ببینید
http://www.barnamenevis.org/forum/showthread.php?t=162748&highlight=SqlCommandBuilder

asefy2008
دوشنبه 25 خرداد 1388, 15:29 عصر
من که درست متوجه نشدم ولی فکر کنم باید بعد از تغییرات ، ذخیره کنی بعد برنامه رو ببندی.

mahallat
شنبه 30 خرداد 1388, 01:07 صبح
سلام
من از لینکی که گذاشتید چیزی متوجه نشدم
من فقط دستوری را می خواهم که بشه اطلاعاتی را که وارد گرید کردم آپدیت بشه و وارد بانک شود.

NewFoxStudent
شنبه 30 خرداد 1388, 09:49 صبح
معرفی اشیا از کلاسهای مورد نیاز
کد:


SqlConnection sqlConnection = new SqlConnection("Data Source=100.10.1.5;Initial Catalog=Attendence;Integrated Security=False;User ID=sa;Password=master");
SqlCommand sqlCommand;
SqlDataAdapter adapter;
DataTable DT;

انتقال اطلاعات به DataTable و نمایش اون توی گرید
کد:


string sqlCmd = "Select * From Personel";
sqlCommand = new SqlCommand(sqlCmd, sqlConnection);
adapter = new SqlDataAdapter(sqlCommand);
DT = new DataTable("Personel");
adapter.Fill(DT);
dataGridView1.DataSource = DT;


ثبت تغییرات ایجاد شده در بانک

کد:



sqlCommand = new SqlCommand("Select * From Personel", sqlConnection);
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(adapter);
adapter.SelectCommand = sqlCommand;
adapter.InsertCommand = sqlCmdBuilder.GetInsertCommand(true);
adapter.UpdateCommand = sqlCmdBuilder.GetUpdateCommand(true);
adapter.DeleteCommand = sqlCmdBuilder.GetDeleteCommand(true);
adapter.Update(DT);

با کد بالا اگه کاربر یک ردیف به گرید اضافه کنه یا حذف کنه و یا تغییری توی یک ردیف ایجاد کنه تمام این تغییرات با هم توی بانک اعمال میشه

البته لازم به توضیح که در صورتی که ردیفی از گرید حذف بشه و اون رکورد توی یه جدول دیگه استفاده شده باشه (منظورم همون کلید خارجی) در این صورت موقع Update باید اون رو هم کنترل کنی

mohsen_csharp
شنبه 30 خرداد 1388, 11:11 صبح
دوست عزیز اگه از SQLExpress استفاده می کنی ، یک بار برنامه رو از روی فایل exe واقع در پوشه bin\debug اجرا کن و داده ها رو تغییر بده و ثبت کن . بعد فرم رو ببند و دوباره برنامه رو از روی فایل exe اجرا کن و بررسی کن که آیا تغییرات قبلی به پایگاه داده اعمال شده یا نه.