2009-03-09 13 views
6

मेरे पास एक एएसपीनेट ग्रिडव्यू है जिसे मैं बांधने की कोशिश कर रहा हूं। मेरे डेटासोर्स में संग्रह और 2 कॉलम हैं जो मैं बाध्यकारी हूं, सबक्लास का हिस्सा हैं। मेरे डेटासोर्स में एक उप-वर्ग है जिसे स्टाफ कहा जाता है जिसमें कर्मचारी की जानकारी होती है। बाउंडफील्ड सर्वेविड और नंबरऑफएक्सप्शन ठीक से बांधते हैं, लेकिन स्टाफ नाम और स्टाफ। ऑफिस बाध्य नहीं हो सकता है।
आप एक सबक्लास मूल्य पर ग्रिडव्यू कॉलम कैसे बांधते हैं?

asp:BoundField DataField="SurveyID" HeaderText="ID" ... 
asp:BoundField DataField="Staff.Name" HeaderText="Name" ... 
asp:BoundField DataField="Staff.Office" HeaderText="Office" ... 
asp:BoundField DataField="NumberOfExceptions" HeaderText="Exceptions" ... 

और कोड के पीछे है:

uxSurveyGrid.DataSource = searchResults; 
uxSurveyGrid.DataBind(); 

अगर मैं कोड में searchResults[0].Staff.Name टाइप के पीछे मैं मूल्य देख सकते हैं, यही कारण है कि क्रम नहीं gridview में Staff.Name मूल्यांकन करने के लिए सक्षम किया जा रहा है ?

आप कॉलम को सबक्लास मूल्यों में कैसे बाध्य करते हैं? क्या मुझे इसे कोडबींड में करना है?

किसी भी मदद की सराहना की जाएगी,

मार्क।

+0

क्या "कर्मचारी" के लिए गेटटर/सेटर है? क्या स्टाफ क्लास में "नाम" और "कार्यालय" दोनों के लिए गेटटर/सेटर्स परिभाषित होते हैं। DataBinder.Eval के लिए स्थितियों में से एक (जो मुझे यकीन है कि बाउंडफ़ील्ड डेटा तक पहुंचने के लिए उपयोग करता है) यह है कि गेटटर/सेटर्स को पुनर्प्राप्त करने की कोशिश करने वाले मान के लिए परिभाषित किया जाना चाहिए। –

उत्तर

8

मेरा मानना ​​है कि आप इस एक खाका क्षेत्र का उपयोग कर काम करने के लिए प्राप्त कर सकते हैं और एक मार्कअप स्क्रिप्टलेट से पूरे databould वस्तु प्राप्त कर सकते हैं ...

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:Label Id="lblSubclassVal" runat="server" Text="<%# DataBinder.Eval(Container.DataItem, "SubClass.PropertyName")%>"></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
+0

मुझे पता है कि इसका उत्तर देने के बाद से काफी समय हो गया है, लेकिन अगर आपको अधिसूचना मिलती है - क्या आपको पता है कि क्या ऐसा ही करने का कोई तरीका है, लेकिन केवल एक इवल की जगह 2-तरफा बांध के रूप में? धन्यवाद! – Brett

0

मार्क,

मैं 99.9% यकीन है कि आप अलग-अलग पंक्ति के लिए ItemDataBound घटना पर codebehind में इस संभाल करने के लिए करना होगा कि कर रहा हूँ।

याद रखें कि आप e.Item.DataItem

6

डेटा एएसपी.नेट ग्रिड व्यू के पीछे बाध्यकारी तंत्र केवल एक स्तर की बाइंडिंग का समर्थन करता है। (इसके WinForms बाध्यकारी समकक्ष के विपरीत जो डेटासेट/डेटाटेबल/डेटा व्यू को बाध्यकारी के मामले में बहु-स्तर का समर्थन करता है)।

आप तीन संभावित हल है:

  1. बाध्यकारी भाव के लिए प्रत्येक पंक्ति
  2. गुण है कि बच्चे वस्तु गुण पर्दाफाश के साथ अपने मूल स्तर संस्थाओं का विस्तार के लिए ItemDataBound घटना हैंडलिंग और इन गुणों का उपयोग कर
  3. बाउंडफ़ील्ड का उपयोग करने के बजाय आप एक टेम्पलेट फ़ील्ड का उपयोग कर सकते हैं और <% =%> अभिव्यक्ति का उपयोग कर सामग्री उत्पन्न कर सकते हैं जो डेटा आइटम तक पहुंचता है।
0

[नाम]। [नाम] वाक्यविन्यास बाउंडफ़िल्ल्ड द्वारा समर्थित नहीं है। केवल साधारण संपत्ति के नाम।

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