के साथ WPF डेटाग्रिड मैं अपने व्यूमोडेल में डब्ल्यूपीएफ में एक डाटाग्रिड बांधने की कोशिश कर रहा हूं ताकि यह डेटाबेस में किसी भी सेल परिवर्तन को अपडेट कर सके और उपयोगकर्ता को पंक्तियों को हटाने और नई पंक्तियों को जोड़ने की अनुमति दे। मुझे इसका काम मिल गया है लेकिन एडीडी और संशोधित करने के लिए एक ELEGANT समाधान नहीं मिल रहा है। यहाँ XAMLएमवीवीएम
<DataGrid AutoGenerateColumns="false" HorizontalAlignment="Left" Margin="26,41,0,0" Name="dataGrid1"
ItemsSource="{Binding Path=GetAllItems}" Height="200" VerticalAlignment="Top" Width="266" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=ItemListID}" Header="ID" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding Path=ItemName}" Header="Name" Width="4*" />
<DataGridCheckBoxColumn Binding="{Binding Path=IsActive}" Header="Active" Width="*" />
</DataGrid.Columns>
तो मेरे विचार मॉडल विधि
private ObservableCollection< ItemsList> getAllItems()
{
using (var context = new InspectorGeneralEntities())
{
var query = from I in context.ItemsLists
select I;
var item = new ObservableCollection<ItemsList>(query.ToList());
return item;
}
}
एक पंक्ति को हटाने या datagrid पर एक पंक्ति को संशोधित करने के डेटाबेस पर प्रवाहित नहीं होता में
है।
क) क्या अन्य बाध्यकारी i) कि इन घटनाओं की पहचान करेगा
ख XAML कोड कैसे मैं इतना है कि मैं DataContext अद्यतन कर सकते हैं दृश्य मॉडल में निकाले गए रिकॉर्ड या संशोधित आइटम पता नहीं लगा पाते में बनाने की जरूरत है अगर यह स्वचालित रूप से नहीं होगा।
दो मुद्दे; 1) NotifyCollectionChangedAction केवल तभी आग लगेगा जब आप कोई नई पंक्ति या हटाएं और मौजूदा पंक्ति जोड़ते हैं, न कि यदि आप मौजूदा पंक्ति में किसी सेल को संशोधित करते हैं। यानी यह बताने का कोई तरीका नहीं है कि पंक्ति गंदा है या नहीं। 2) जब आप पहली बार नई पंक्ति में NotifyCollectionChangedAction टाइप करना शुरू करते हैं। आपको सभी कोशिकाओं को भरने का मौका मिलने से पहले निकाल दिया जाता है। आप डीबी में एक खाली पंक्ति नहीं जोड़ सकते हैं, खासकर अगर इस बिंदु पर शून्य फ़ील्ड हैं। तो फिर आपको अपडेट का उपयोग करना होगा..जो फिर से मैं कैप्चर करने का तरीका नहीं समझ सकता। – Josef