2011-07-01 7 views
5

मैं सामान्य रूप से एमएसडीएन के माध्यम से सभी पैदल दूरी से गुजर चुका हूं क्योंकि वे बेकार हैं - बेहद सीमित हैं।वीएस 2010 रिपोर्ट व्यूअर नेस्टेड संग्रह तक पहुंच नहीं सकते, कोई भी?

यदि मैं अपनी कक्षा में एक ही कक्षा में आंतरिक वस्तु करता हूं तो मैं जानकारी प्रदर्शित कर सकता हूं, लेकिन जैसे ही मैं इसे वस्तुओं की एक सूची (संग्रह) में परिवर्तित करता हूं, मुझे प्रदर्शन में # त्रुटि मिलती है।

यहां एक अद्यतन उदाहरण है।

उदाहरण के लिए मेरे पास एक व्यक्ति वस्तु है जिसमें एक या अधिक फोन नंबर (संख्याओं की सूची) हो सकती है और मुझे फ़ोन नंबरों तक पहुंचने का कोई तरीका नहीं मिल रहा है।

[Serializable] 
public class Person 
{ 
    private readonly List<PhoneNumber> _numbers = new List<PhoneNumber>(); 

    public Person() 
    { 
    } 

    public Person(int id, string name, string address, decimal salary) 
    { 
     Id = id; 
     Name = name; 
     Address = address; 
     Salary = salary; 
    } 

    public void AddNumber(PhoneNumber number) 
    { 
     _numbers.Add(number);    
    } 


    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Address { get; set; } 

    public List<PhoneNumber> PhoneNumbers { get { return _numbers; } }  

} 

[Serializable] 
public class PhoneNumber 
{ 
    public PhoneNumber() 
    { 
    } 

    public PhoneNumber(int id, string areaCode, string phone) 
    { 
     AreaCode = areaCode; 
     Id = id; 
     Phone = phone; 
    } 

    public string AreaCode { get; set; } 
    public string Phone { get; set; } 
    public int Id { get; set; } 
} 

मैं संग्रहों को पॉप्युलेट करता हूं।

var persons = new List<Person>(); 

    var t = new Person(1, "Mike", "5150 Nuts", 125); 

    t.AddNumber(new PhoneNumber(1, "425", "455")); 
    t.AddNumber(new PhoneNumber(1, "425", "450")); 

    persons.Add(t); 

    t = new Person(2, "Tom", "1055 MS HAS NO DOCUMENTATION AS USUAL!", 1245); 

    t.AddNumber(new PhoneNumber(2, "TYPICAL", "OF-THEM")); 
    t.AddNumber(new PhoneNumber(2, "ANY", "ONE???")); 

    persons.Add(t); 

मैं फिर रिपोर्ट में सब कुछ असाइन करता हूं।

reportViewer1.ProcessingMode = ProcessingMode.Local; 
    reportViewer1.LocalReport.ReportPath = "..\\..\\Report1.rdlc"; 
    reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Person",persons)); 
    reportViewer1.RefreshReport(); 

रिपोर्ट में यह लोगों को इस मुद्दे के बिना प्रदर्शित करेगा के रूप में मैं पाठ बॉक्स एक सूची में समूह सूची क्रमांक से जोड़ने और फिर प्रदर्शित करता है। जब मैं फोन नंबर प्रदर्शित करने का प्रयास करता हूं, तो मुझे #ERROR संदेश मिलता है, और मेरे जीवन के लिए मुझे किसी व्यक्ति को सौंपा गया नंबरों की सूची प्रदर्शित करने का कोई तरीका नहीं दिख रहा है।

अगर मैं PhoneNumber करने के लिए व्यक्ति वर्ग के भीतर List<PhoneNumber> से वस्तु को बदल मैं इसे उपयोग कर सकते हैं, लेकिन जब एक List<PhoneNumber> मैं नहीं कर सकते प्रदर्शित करने के लिए कोशिश कर रहा।

मुझे कक्षा आइटम के भीतर List<of objects> प्रदर्शित करने के लिए सक्षम होना चाहिए।

+0

रिपोर्ट कैसे स्वरूपित की जाती है? ऐसा लगता है कि आपको विस्तार से संख्याओं के साथ, नाम से रिपोर्ट को समूहबद्ध करने की आवश्यकता है। –

+0

मेरी समस्या यह है कि मैं फोन नंबरों को भी प्राप्त नहीं कर सकता। जब मैं ऑब्जेक्ट बनाता हूं तो यह दिखाता है कि वास्तविक रिपोर्ट डिज़ाइनर में नाम और पता है। मैं वीएस -2010 का उपयोग कर रहा हूं और मैं अपने जीवन के लिए फोन नंबर तक पहुंच नहीं पा रहा हूं। मुझे वास्तव में नेस्टेड सूची तक पहुंचने की क्षमता की आवश्यकता है। कोई उपाय? – nitefrog

+0

आपको क्या लगता है कि यह काम करेगा? क्या आपने कभी एक उदाहरण देखा है? ध्यान दें कि अधिकतर रिपोर्टिंग सेवाएं डेटा स्रोत प्रभावी ढंग से फ्लैट होते हैं। –

उत्तर

2

नेस्टेड संग्रह को एक सब्रेपोर्ट के रूप में प्रदर्शित किया जाना चाहिए जहां नेस्टेड संग्रह एक अलग डेटा स्रोत है। आपको ईवेंट LocalReport.SubreportProcessing को एक हैंडलर से बांधना होगा जो अलग-अलग रिपोर्ट डेटा स्रोत के रूप में उपरोक्त में डेटासोर्स (फ़ोन नब्स) फ़िल्टर और बाध्य करेगा। दिए गए लिंक पर उदाहरण आपको प्राप्त करना चाहिए जहां आपको जाना है।

+0

धन्यवाद! पूरी तरह से काम किया !!!!! – nitefrog