2013-07-04 10 views
20

में संशोधित वस्तुओं की सूची प्राप्त करने मैं entities की सूची बाध्यकारी कर रहा हूँ इस तरह एक डेटा ग्रिड दृश्य में:कैसे इकाई की रूपरेखा 5

var orders = context.Order.ToList(); 

BindingList<Order> orderList = new BindingList<Order>(orders); 

dataGridView1.DataSource = orderList; 

उपयोगकर्ता को संपादित करने या सीधे DataGridView पर नया जोड़ सकते हैं। जब उपयोगकर्ता प्रदर्शन को अनुकूलित करने के लिए Save बटन पर क्लिक करता है, तो मैं प्रविष्टियों/अद्यतन करने के लिए परिवर्तित/नई इकाइयों की सूची पुनर्प्राप्त करना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है?

संपादित gridview करने के लिए नई पंक्ति जोड़ने परिभाषित करें:

BindinList<Order> orders = (BindingList<Order>)dataGridView1.Datasource; 

order.Add(new Order()); 

संपादित 2 का समाधान:

BindinList<Order> orders = (BindingList<Order>)dataGridView1.Datasource; 

Order order = new Order(); 

context.Order.Add(order); 

order.Add(order); 

उत्तर

39
List<Object> modifiedOrAddedEntities = context.ChangeTracker.Entries() 
.Where(x => x.State == System.Data.EntityState.Modified 
     || x.State == System.Data.EntityState.Added) 
.Select(x=>x.Entity).ToList(); 

जब एक DataGridView यह अक्सर बनाने के लिए पसंद किया जाता है करने के लिए एफई संस्थाओं बाध्यकारी DbSet.Localसे । इस तरह आपको दो तरह से डाटाबेसिंग मिलती है और BindingSource.Add() या IBindingList.Add() के माध्यम से जोड़ते समय आपकी नई संस्थाओं को संदर्भ में स्वचालित रूप से जोड़ा जाता है। यह काम करने का सबसे आसान तरीका, एक बार ठीक से बाध्य होने पर, DataGridView.AllowUserToAddRows को सत्य और नई पंक्तियों को सेट करने के लिए उपयोगकर्ताओं को दर्ज किया जाएगा, नई इकाइयां संदर्भ में जोड़ दी जाएंगी।

context.Orders.Load(); 
BindingList<Order> bindingList = context.Orders.Local.ToBindingList(); 
BindingSource ordersBindingSource = new BindingSource(); 
ordersBindingSource.DataSource = bindingList; 
dataGridView1.DataSource = ordersBindingSource ; 

System.Data.Entity.ToBindingList() उपयोग करने के लिए संदर्भित किया जाना चाहिए और आप EF4.1 या अधिक से अधिक उपयोग करना चाहिए।

+0

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद। आपका कोड संशोधित इकाइयों की सूची प्राप्त कर सकता है लेकिन इसे नई संस्थाओं की सूची नहीं मिल सकती है। मैं कोड प्रदान करता हूं जो नई इकाइयों को जोड़ने के लिए उपयोग करता है। क्या आप मुझे पता लगाने में मदद कर सकते हैं? –

+0

@DoanCuong, अतिरिक्त उत्तर विवरण देखें। –

+0

क्षमा करें, लेकिन क्या आप कृपया मुझे बताएंगे कि 'बाइंडिंगसोर्स.एड() 'या' IBingdingList.Add() 'को कैसे कार्यान्वित किया जाए? और एक और बात, 'dbset.local' पर 'toBindingList()' फ़ंक्शन नहीं है। ऐसा करने का एकमात्र तरीका 'var bindingList = new BindingList (context.Orders.Local.ToList()) का उपयोग कर रहा है;' –

संबंधित मुद्दे