سلام.
یک برنامه دارم که در آن عملیات Crud انجام میشه . کلیه عملیات ها به درستی انجام میشود و عملیات افزودن و ویرایش در یک فرم دیگر انجام شده و نتیجه در جدول نمایش داده میشود.
بعد از انجام عملیات Create اطلاعات به درستی در جدول به روز می شود اما در Update عملیات به درستی انجام میشود اما با آنکه بعد از این عملیات جدول مجدد به روز رسانی میشود اما اطلاعات ویرایش شده در جدول به روز رسانی نمی شود. اما برنامه را بسته و مجدد باز کنید اطلاعات ویرایش شده به درستی نمایش داده می شود.
برنامه با EF Core 3.1 و Code First طراحی شده است.
ببینید شما وقتی در فرم روی دکمه ویرایش کلیک می کنید Id کاربر رو دریافت می کنید و به فرم ویرایش منتقل می کنید. کد زیر :
private void btnEdit_Click(object sender, EventArgs e)
{
variable.id = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());
OpenForm();
LoadDataGrid();
}
خب در متد OpenForm هم که فرم ویرایش رو صدا می زنید و نمایشش میدید
private void OpenForm()
{
frmNewEditeStudent frm = new frmNewEditeStudent();
frm.ShowDialog();
}
بعد از اینکه فرم ویرایش باز شد و اطلاعات رو ویرایش کردید و دکمه ویرایش رو زدید عملیات ویرایش اطلاعات انجام میشه.
private void btnEditSave_Click(object sender, EventArgs e)
{
var model = db.tblStudent.Where(x => x.stdId == id).FirstOrDefault();
model.StudentName = txtStudentName.Text;
db.tblStudent.Update(model);
db.SaveChanges();
variable.id = 0;
this.Close();
}
خب دقت کنید اطلاعات در اینجا در دیتابیس ویرایش میشه اما وقتی دستور this.close اجرا میشه و فرم ویرایش بسته میشه و به فرم اول برمیگردید دستور LoadDataGrid صدا زده میشه و در اینجا هم کد زیر رو دارید:
public void LoadDataGrid()
{
var list = db.tblStudent.ToList();
dataGridView1.DataSource = list;
}
نکته : خب نکته در همینجاست، درسته که شما مجدد کوئری رو اجرا می کنید. اما این کوئری از db داره اجرا میشه و db در این لحظه آپدیت های رکوردهای دیتابیس رو درون خودش نداره و چیزی از آپدیت رو نمی تونید ببینید.
اما راه حل : کدهای بالا که همه کدهای خودتون بود. راه حل فقط یک خط کد هست و در ادامه میگم بهتون
public void LoadDataGrid()
{
//در اینجا باید یک بار دیگر دیتابیس را نمونه سازی کنید.
db = new SchoolContext();
var list = db.tblStudent.ToList();
dataGridView1.DataSource = list;
}
باید دیتابیس رو مجدد نمونه سازی کرد تا همه تغییرات شامل آپدیت ها و اضافه و حذف ها رو شامل بشه.
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
350
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
319
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4270
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
662
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3174
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3251
- پاسخ :
1
|
تاریخ :
1403/04/12
- ساعت :
07:27:00 PM
- بازدید :
658
- پاسخ :
0
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
111
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|