2010-11-21 12 views
5

मैं अपने डेटाग्रिड व्यू क्लास में एक कॉलम को .NET 4.0 का उपयोग कर सी # में दूसरे स्तर की ऑब्जेक्ट में प्रविष्टि में जोड़ना चाहता हूं। उदाहरण के लिए: कक्षा एक DataGridView पर डेटा स्रोत के रूप में एक है, अभी तक बाँध की एक सूची घोषित करने के लिए एक तरीका होता हैबाध्यकारी डेटाग्रिड व्यू कॉलम द्वितीय स्तर की ऑब्जेक्ट

public class A 
{ 
    public long id; 
    public B bClass; 
} 

और वस्तु बी

public class B 
{ 
    public long id; 
    public string name; 
} 

:

मैं वस्तु एक है कक्षा बी में नाम विशेषता के लिए कॉलम में से एक?

मैंने इसे थोड़ा नीचे डिस्टिल्ड किया, लेकिन उम्मीद है कि यह भ्रमित नहीं है। सहायता के लिए धन्यवाद!

उत्तर

0

हां।
जब आप बाँध, तो आप इस कार्य करें:

grid.DataSource = MyAList; 
grid.DataMember = "bClass"; 
grid.DataBind(); 

अब जब आप बाध्यकारी रहे हैं, आप वर्ग बी

+0

से नई कक्षा को शुरू करने वाला एक कन्स्ट्रक्टर भी लिख सकते हैं लेकिन क्या यह गलत तरीके से बांध नहीं पाएगा? मेरी समझ यह है कि डेटा ग्रिड केवल primitives, संग्रह/enumerables या INotifyPropertyChanged इंटरफेस से बांध सकते हैं। –

+0

@AK; आप हमेशा 'ItemDataBound' ईवेंट में विशिष्ट बाध्यकारी संभाल सकते हैं। – BeemerGuy

1

ऊपर समाधान मेरे लिए काम नहीं करता है के सदस्यों के लिए मूल्यांकन कर रहे हैं। मैं इस धागे में इस तरह के प्रश्न को समझ गया: Is it possible to bind complex type properties to a datagrid?

मैंने जो किया वह गुई-लेयर में कक्षा सी को लागू करने के लिए है जिसमें पहले स्तर पर सभी वांछित गुण हैं। आप कक्षा ए:

public class C 
{ 
    public C(A a) 
    { 
     Id = a.Id; 
     Bid = a.bClass.Id; 
     Bname = a.bClass.Name; 
    } 

    public long Id; 
    public long Bid; 
    public string Bname; 
} 
संबंधित मुद्दे