2011-09-07 19 views
8

मेरे पास एकाधिक कॉलम वाला ग्रिड है और उपयोगकर्ता किसी भी कॉलम के आधार पर सॉर्ट कर सकते हैं। डेटा, जो ग्रिड बाध्य है कस्टम इकाई का संग्रह है। मेरे पास स्क्रीन पर एक प्रिंट बटन है और इस बटन के क्लिक पर मुझे कस्टम प्रिंट करने की आवश्यकता है। प्रिंट को उसी क्रम में डेटा को दिखाना चाहिए जैसा कि ग्रिड में प्रदर्शित किया गया है (अतिरिक्त डेटा के साथ)डेटाग्रिड से सॉर्ट किए गए आइटम्ससोर्स को कैसे प्राप्त करें

सॉर्टिंग ईवेंट में डेटा स्रोत को सॉर्ट करने के बजाय सीधे सॉर्ट किए गए डेटा स्रोत को प्राप्त करने का कोई तरीका है?

धन्यवाद पंकज

उत्तर

5

हाँ, वहाँ है। डब्ल्यूपीएफ में, हमेशा CollectionView बाध्य है, संग्रह कभी नहीं। यदि आप स्वयं संग्रह संग्रह निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट का उपयोग किया जाता है। आप इस तरह यह डिफ़ॉल्ट संग्रह दृश्य पहुँच सकते हैं:

CollectionViewSource.GetDefaultView(yourCollectionOfCustomEntities); 

इस संग्रह को देखने के रूप में सभी सॉर्टिंग और फ़िल्टरिंग लागू किए गए हैं ग्रिड द्वारा दिखाया गया है।

+1

अपने जवाब के आधार पर मैं क्या समझ चुके हैं कि स्रोत संग्रह (किसी भी स्तंभ में के रूप में और जब उपयोगकर्ता प्रकार डेटा) कभी नहीं बदलेगा और केवल CollectionView बदल जाओ नहीं है। मेरे प्रिंट के काम के लिए मुझे संग्रह प्रपत्र (सूची (संस्थाओं की सूची) में डेटा चाहिए। तो डिफ़ॉल्ट संग्रह दृश्य पर्याप्त नहीं होगा। सॉर्ट किए गए संग्रह दृश्य के आधार पर संग्रह को सॉर्ट करने का कोई आसान तरीका है? डीबगिंग के दौरान मैंने देखा एक बात यह है कि कलेक्शन व्यू में एक संरक्षित संपत्ति इंटरनल लिस्ट है, जिसमें क्रमबद्ध संग्रह है। लेकिन चूंकि संपत्ति संरक्षित है, इसलिए मैं इसे प्राप्त नहीं कर सकता। –

+0

जब आप संग्रह दृश्य पर गणना करते हैं, तो आइटम क्रमबद्ध क्रम में वापस लौटाया जाना चाहिए ... कृपया –

+0

जांचें हां मैं सहयोगी दृश्य को गिनने और क्रमबद्ध संग्रह बनाने में सक्षम हूं। –

2

आप अपने डेटाग्रिड की आइटम संपत्ति को भी समझा सकते हैं। आइटम्ससोर्स प्रॉपर्टी के विपरीत, आइटम प्रॉपर्टी को सॉर्टिंग और फ़िल्टरिंग सहित स्क्रीन पर क्या है, यह दर्शाता है। उदाहरण के लिए:

foreach (var item in dataGrid.Items) 
{ 
    // do something 
} 
7

आपको अपने डेटाटाइड का उपयोग करना होगा। आइटम्स, आइटम ग्रिड के वर्तमान दृश्य को प्रतिबिंबित करते हैं। और आपको विधि कास्ट और उपयोग के बाद कनवर्ट करना होगा .सूची();

कल्पना इस

List<MyClass> myListOfMyClass = new List<MyClass>(); 
myGrid.ItemSource = myListOfMyClass; 
List<MyClass> myListOfMyClassSortedByTheUser = myGrid.Items.Cast<MyClass>().ToList(); 
+3

मुझे लगता है कि यह स्वीकार किए गए एक से बेहतर जवाब है। –

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