با عرض سلام،ادب و احترام
من برنامه دارم که مبتنی بر پایگاه داده بوده و عملیات افزودن،حذف و ویرایش را انجام می دهد
برای آپدیت دیتا گریدم از کد زیر بهره می برم:
myDataGrid.ItemsSource = db.tblNames.ToList();
این کد در همان لحظه ای که داده ای را به دیتا گرید می افزایم یا داده ای را حذف می نمایم،تغییرات را در دیتا گرید اعمال می کند ولی در مورد ویرایش عمل نمی کند!!!باید حتما پنجره برنامه را بسته و دوباره باز کنم تا تغییر در داده ویرایش شده را ببینم!!!
کد من برای افزودن داده:
private void btnAdd_Click(object sender, RoutedEventArgs e) { db.pSave(txtName.Text,txtFamily.Text); myDataGrid.ItemsSource = db.tblNames.ToList(); MessageBox.Show("OK"); }
کد من برای ویرایش داده(در اینجا تنها عنصر با ID عدد 9 را ویرایش می نمایم.برای سادگی این کار را کردم):
private void btnEdit_Click(object sender, RoutedEventArgs e) { db.pEdit(9, txtName.Text, txtFamily.Text); myDataGrid.ItemsSource = db.tblNames.ToList(); MessageBox.Show("OK"); }
مشکل از نمونه Context Entity است
به احتمال زیاد نمونه سازی دوباره انجام نمیشه و برای همین هست لیست آپدیت نمیشه
من حتی به روش LINQ به پایگاه متصل شدم.بازم همین مشکل برام پیش اومد!
البته من توی ویندوز فرم مشکلی ندارم.تنها در wpf این مشکل ایجاد میشه!!
به نظرتون چه کار کنم؟
با سلام رویداد لود دیتا گرید را بایستی در رویداد window actived بنویسید.
private void Window_Activated(object sender, EventArgs e) { datagrid.ItemsSource = db.Table_dar.ToList(); }
یا علی
دوست عزیز بهترین روش این هستش که بعد هر عمل دیتاگرید ویو رو یه بار رفرش کنی که با کدی که دیتای جدول رو نمایش میده با همون یک بار دیگه جدول مورد نظر رو دیتاش رو نشون بده
یا هتی میتونی یک بار دیتاگرید ویو رو خالی و دوباره مقدار بهش بدی که این راه خیلی طولانی و برنامه تو دیتاهای زیاد کند میشه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)