تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
wpf tips- The DataGrid part2
#1
كاتب الموضوع : !TheCodeOfSilence

بسم الله الرحمن الرحيم

لنكمل الحديث عن datagrid
رابط الموضوع الاول
http://vb4arb.com/vb/showthread.php?1747
لاننا سنستخدمه نفس الطريقة
سنقوم في هذا المثال باضافه بيانات الى مشتريات العميل ولكن كيف
سنستخدم 2 textbox , button لاضافة البيانات
سنقوم بتجهيز datagrid كما في المثال السابق

اولا يجب علينا استيراد namespace الاتي


كود :
using System.ComponentModel;
ما سنفعله الان هو ربط الجريد ب list والتعامل مع list وليس الجريد ولكن سنستخدم BindingList وذلك من اجل التعامل مع ال binding فى wpf حيث ان list لا تدعم notification


كود :
BindingList<PurchaseData> PD = new BindingList<PurchaseData>();
ولكن سنقوم باجراء بعض التغيرات على ال class الخاصة بالمشتريات لتصبح كالاتي


كود :
public class PurchaseData : INotifyPropertyChanged
{
private string _ItemName;
private decimal _ItemPrice;

public string ItemName
{
get { return _ItemName; }
set
{
_ItemName = value;
OnPropertyChanged("ItemName");
}
}


public decimal ItemPrice
{
get { return _ItemPrice; }

set
{
_ItemPrice = value;
OnPropertyChanged("ItemPrice");
}
}

public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}

}
وفي حدث load سنقوم بربط الجريد كالاتي


كود :
dataGrid2.ItemsSource = PD;
فالجريد ستقوم بعرض ما هو موجود داخل BindingList وستقوم بالتحديث تلقائيا عند تحديث ال binding list
والان سنتعامل فقط مع الbinding list فلاضافة بيانات نقوم بالاتي

كود :
PurchaseData P = new PurchaseData();
P.ItemName = textBox1.Text;
P.ItemPrice = decimal.Parse(textBox2.Text);

PD.Add(P);
وعندما يقوم المستخدم بحذف اى سطر من الجرد فسيتم تحديث bindingList تلقائيا
كما يمكن ان نقوم بجمع المشتريات كما فى المثال السابق ولكن هناك مشكله فلا يوجد حدث في الجرد لحذف سطر ولذلك كما قلنا سنعتمد على bindingList
ولكن كيف
bindingList لديها حدث ListChangedEventHandler ويتم استخدامه كالاتي

كود :
PD.ListChanged += new ListChangedEventHandler(PD_ListChanged);
void PD_ListChanged(object sender, ListChangedEventArgs e)
{

}
هذا الحدث يتم اطلاقة عند حدوث اى تغير فى list لذا فيمكنك كتابة كود تجميع المشتريات فى هذا الحدث ويتم تحديث
المجموع تلقائيا
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] التعديل على ستايل DataGrid dabas 9 4,045 26-03-17, 11:07 AM
آخر رد: الشاكي لله
  [سؤال] كيف يمكن إضافة صف فوق صف أسماء الأعمدة DataGrid عبد الله 3 3,118 12-09-15, 12:15 AM
آخر رد: khodor1985
  [سؤال] تكرار ظهور الأعمدة DataGrid ItemsSource عبد الله 0 1,928 21-07-15, 07:00 AM
آخر رد: عبد الله
  wpf tips- The DataGrid RaggiTech 0 2,073 15-10-12, 10:10 AM
آخر رد: RaggiTech
  wpf tips- validation RaggiTech 0 1,870 15-10-12, 10:09 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم