دسته بندی ها
18:34 1401/03/27

نمایش تغییرات در DataGrid بعد از ویرایش در الگوی Unit Of Work

مشخصات سوال کننده :
کاربر : Tarak4135     امتیاز کاربر : 56     رتبه کاربر : 17
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1948
پاسخ دهنده : saedbfd 16:57 1401/03/28

نمایش تغییرات رکورد بعد از Update

سوالتون سوال خوبی هست. به همین خاطر پاسخ سوال رو به شما میدم تا سایر کاربرانی که نیاز هم دارن استفاده کنن. 

شما قبلا این سوال رو در لینک زیر مطرح کردید و گفتم که باید برای نمایش کپی جدید از اطلاعات بعد از ویرایش یکبار دیتابیس رو new کنید یا نمونه سازی کنید.

به روزنشدن اطلاعات DataGrid بعد از ویرایش در dotnet Core

خب وقتی شما از الگوی UnitOfWork استفاده می کنید به طور مستقیم به دیتابیس دسترسی ندارید و نمی تونید دیتابیس رو نمونه سازی کنید. خب در این موارد می تونید از متدهای خود Entity Framework استفاده کنید و اطلاعات رو ReLoad کنید.

 

افزودن متد Refresh در کلاس Unit Of Work

ابتدا متدی به نام Refresh در کلاس UnitOfWork اضافه کنید:

public void Refresh(object T)
{
   _context.Entry(T).Reload();
}

همونطور که میبینید این متد یک ورودی از نوع object داره که این ورودی همون رکورد یا ردیفی هست که اطلاعاتش ویرایش شده. (خب این متد رو داخل اینترفیس هم تعریف کنید.)

 

حالا به راحتی می تونیم از این متد در فرم استفاده کنیم.

public void LoadDataGrid(int id = 0)
{
   if (id == 0)
   {
      var list = _iuw.StudentRepositoryUW.Get().ToList();
      dataGridView1.DataSource = list;
   }
   else
   {
      _iuw.newRefresh(_iuw.StudentRepositoryUW.GetById(id));
      var list = _iuw.StudentRepositoryUW.Get().ToList();
      dataGridView1.DataSource = list;
   }
}

متد LoadDataGrid رو به صورت بالا تغییر دادیم. یک پارامتر ورودی به نام id با مقدار پیش فرض 0 هم قرار دادیم. اگر مقدار پارامتر 0 باشه که هیچی اطلاعات عادی نشون داده میشه. اما اگر مقدار id بزرگتر است 0 باشه یعنی این متد برای ویرایش صدا زده شده و اون رکورد رو رفرش شده نمایش میدیم.

 

متد BtnEdit_Click

private void btnEdit_Click(object sender, EventArgs e)
{
   int getId = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());
   variable.id = getId;
   OpenForm();
   LoadDataGrid(getId);
}

 

دانلود سورس اصلاح شده

به این پاسخ امتیاز بدهید    1
امتیاز: 1654 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود