2011-03-03 13 views
5
पर डेटा ग्रिड दुर्घटनाओं

इम वर्तमान में एक कस्टम RowCollection को DataGrid.ItemsSource, जो IList और INotifyCollectionChanged लागू करता बाध्य करने के लिए कोशिश कर रहा है:कस्टम संग्रह संपादित

Public Class RowCollection(of T)
Implements IList(Of T)
Implements INotifyCollectionChanged
Private _List As New List(Of T)
...

(VB कोड के लिए क्षमा करें, मैं अनुवाद हो जाएगा सी # के लिए मेरा पूरा कोड जल्द ही।)

कक्षा पर ध्यान दें किसी मौजूदा सीएलआर संग्रह से प्राप्त नहीं होता है। मैंने अपनी खुद की कक्षा बनाई क्योंकि मुझे रिकॉर्ड पेजिंग को लागू करने के लिए GetItemAt को ओवरराइड करने की आवश्यकता है। संग्रह आंतरिक जोड़ता है और अपने स्वयं के निजी सूची _List से वस्तुओं को हटा।

अब, मैं डेटाग्रिड में आइटम देखने में सक्षम हूं, लेकिन जैसे ही मैं संपादित करने के लिए सेल पर डबल क्लिक करता हूं, मुझे अमान्य ऑपरेशन अपवाद प्राप्त होता है: 'EditItems' उपलब्ध नहीं है।

मेरा प्रश्न, अन्य क्या इंटरफेस मैं आदेश मेरे संग्रह पूरी तरह से डेटा ग्रिड के साथ संगत बनाने के लिए लागू करना चाहिए है?

+0

+1 मुझे याद है कि मैं एक ही समस्या थी, लेकिन इसे में खुदाई करने के लिए है क्योंकि मैं समय नहीं था प्रयास नहीं किया है देखते हैं। जहाँ तक मुझे याद है, मैं ObservableCollection का उपयोग कर के रूप में ItemsSource उन्हें अपने खुद के संग्रह के साथ सिंक में समाप्त हो गया। अगर कोई समाधान है तो मैं उत्सुक हूं। – HCL

+0

मुझे लगता है कि आप जो करने की कोशिश कर रहे हैं वह सरल तरीके से किया जा सकता है। एक मौजूदा संग्रह का प्रयोग करें, और उसके बाद आभासी मोड में DataGridView रख दिया और CellValueNeeded को लागू करने (वस्तु, ... CellEventArgs) हैंडलर। लिंक: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.virtualmode.aspx वर्चुअल मोड का उद्देश्य आपके मन में मौजूद पेजिंग परिदृश्य के प्रकार का समर्थन करना है। –

+1

क्षमा करें। मैं .NET 3.5 के लिए WPF टूलकिट में WPF DataGrid का उपयोग करके Im का उल्लेख करना भूल गया। आपके द्वारा उल्लिखित लिंक WinForms के बारे में है। –

उत्तर

2

Here आप निम्नलिखित पढ़ सकते हैं:

संपादन

डिफ़ॉल्ट रूप से, आप डेटा ग्रिड में सीधे आइटम संपादित कर सकते हैं। संपादन कि प्रतिबद्ध किया जा सकता है और सही ढंग से रद्द की गारंटी करने के लिए, डेटा ग्रिड में वस्तुओं IEditableObject इंटरफ़ेस को लागू करना होगा। वैकल्पिक रूप से, आप डेटा ग्रिड में संपादन निष्क्रिय करने के लिए सही पर IsReadOnly गुण सेट कर सकते हैं।

IEditableObject इंटरफ़ेस here इसके अलावा IEditableCollectionView here

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