به روز نشدن اطلاعات DataGrid بعد از ویرایش در پروژه Windows Dotnet Core
سلام.
یک برنامه دارم که در آن عملیات 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;
}
باید دیتابیس رو مجدد نمونه سازی کرد تا همه تغییرات شامل آپدیت ها و اضافه و حذف ها رو شامل بشه.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress