2013-03-14 7 views
6

मेरे पास एक ऐसा नियंत्रण है जिसमें पुनरावर्तक, rptReferrals है, जो एंटीटी ऑब्जेक्ट्स, रेफरल की सूची के माध्यम से चलता है। रेफ़रल ऑब्जेक्ट में Answers नामक किसी अन्य तालिका का संदर्भ है, जो उपयोगकर्ता के लिए सबमिट किए गए उत्तरों की एक सूची है। rptReferrals एक बच्चे को दोहराएगा, rptQuestionnaire जिस व्यक्ति के साथ लॉग इन किया गया है उसके लिए प्रश्नों की एक सूची में, जो रेफरल ऑब्जेक्ट से जुड़ा हुआ नहीं है, यह बाध्य है।एक्सेस अभिभावक पुनरावर्तक डेटाइटम संपत्ति

यहाँ aspx कोड है:

<asp:Repeater runat="server" ID="rptReferrals" OnItemDataBound="rptReferrals_OnItemDataBound"> 
    <ItemTemplate> 
     //some HTML for the referral object 
     <asp:Repeater runat="server" ID="rptQuestionnaire" OnItemDataBound="rptQuestionnaire_OnItemDataBound"> 
       //some HTML for displaying questions and answers 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

बैकएंड कोड:

protected void rptReferrals_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     //THIS IS THE ITEM THAT HAS THE LIST OF ANSWERS I NEED 
     var data = e.Item.DataItem as PatientReferral; 
     var rptQuestionnaire = e.Item.FindControl("rptQuestionnaire") as Repeater; 
     rptQuestionnaire.DataSource = QuestionList; 
     rptQuestionnaire.DataBind(); 

     //QuestionList is a list of questions populated on page load. 
     // I can't bind to the property of data.Answers because not 
     //all questions are answered. data.Answers is only a list of 
     //the questions answered 
    } 
} 

protected void rptQuestionnaire_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Need to access the data.Answers object from above. HOW???? 
    } 
} 

समस्या मैं कर रहा हूँ कि प्रश्नों की सूची की आवश्यकता नहीं है और मैं सभी सवालों को प्रदर्शित करने की जरूरत है भले ही उपयोगकर्ता ने इसका उत्तर दिया हो या नहीं। लेकिन अगर उन्होंने इसका उत्तर दिया, तो मुझे जवाब प्रदर्शित करने की ज़रूरत है, जो आरपीटीआरफेरल्स से जुड़ी संपत्ति है।

मेरे माता-पिता पुनरावर्तक के डेटाटाइम की संपत्ति तक पहुंचने के तरीके पर कोई विचार? मैं इस बिंदु पर कोई जवाब ले जाऊंगा।

+0

मैं कुछ सप्ताह पहले इस समस्या थी, और एक सवाल पूछा था। [यहां देखें] (http://stackoverflow.com/questions/15137029/accessing-a-nested-repeaters- डेटासोर्स) –

+0

मैं बाहरी पुनरावर्तक की सामग्री को एक अलग उपयोगकर्ता नियंत्रण में डाल दूंगा, फिर आप इसे दे सकते हैं डेटा आइटम के लिए जो भी नाम आप चाहते हैं उसके साथ संपत्ति। मैं कहूंगा कि यह सामान्य रूप से अच्छा विचार है, क्योंकि 'कंटेनर। डेटाटाइम' नाम होने से दो अलग-अलग चीजों का उल्लेख भ्रमित हो रहा है। – millimoose

उत्तर

10

आप RepeaterItem नियंत्रण से .Parent विशेषता अपना रास्ता बाहरी RepeaterItem अप करने के लिए काम करने के लिए (और इस प्रकार, अपने DataItem) का उपयोग कर सकते हैं।

लगता है जैसे यह काम करेगा:

protected void rptQuestionnaire_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Repeater currentRepeater = (Repeater)sender; 
     // Note that you might only need one ".Parent" here. Or you might need 
     // more, depends on your actual markup. 
     var data = ((RepeaterItem)e.Item.Parent.Parent).DataItem as PatientReferral; 
     // Now you have access to data.Answers from the parent Repeater 
    } 
} 
+0

मैं इसे आज़मा दूंगा और देख सकता हूं कि यह कैसा चल रहा है! धन्यवाद! – Icestorm0141

+1

@ Icestorm0141 शुभकामनाएं, मुझे बताएं कि यह कैसा चल रहा है! – jadarnel27

+0

यह पूरी तरह से काम किया !!! मेरे वास्तविक मार्कअप के आधार पर मुझे "पैरेंट" की संख्या को संशोधित करना पड़ा लेकिन यह काम किया! धन्यवाद! – Icestorm0141

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