2010-02-19 16 views
6

मैं डेटा निम्नलिखित है:AdvancedDataGrid प्रदर्शित करता है गुण आपत्ति नहीं है

<mx:AdvancedDataGrid dataProvider="{data}"> 
    <mx:columns> 
     <mx:AdvancedDataGridColumn headerText="Product" width="55" dataField="name" /> 
     <mx:AdvancedDataGridColumn headerText="User" dataField="user.login" /> 
     <mx:AdvancedDataGridColumn headerText="Email" dataField="user.email" /> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

समस्या है - AdvancedDataGrid नहीं नेस्टेड उपयोगकर्ता के गुणों को प्रदर्शित करता है करता है:

var data: ArrayCollection = new ArrayCollection(
      [ 
       { name: "ProductA", user: {login: "loginA", email: "emailA"} }, 
       { name: "ProductB", user: {login: "loginB", email: "emailB"} }, 
       { name: "ProductC", user: {login: "loginC", email: "emailC"} } 
      ] 
     ); 

यह सरणी मेरी AdvancedDataGrid के लिए एक डेटा प्रदाता है वस्तु, लेकिन सरल डेटाग्रिड करता है। यहां क्या गलत है?

उत्तर

1

डेटाग्रिड जटिल पथों का समर्थन करने के लिए पैच किया गया था लेकिन मुझे नहीं लगता कि उन्नतडेटाग्रिड था। अधिक जानकारी: http://bugs.adobe.com/jira/browse/SDK-9801

आप इसके बजाय लेबल फ़ंक्शन का उपयोग कर सकते हैं।

7

आपको लेबल फ़ंक्शन या आइटम विक्रेता का उपयोग करने की आवश्यकता है। यहाँ एक labelFunction

<mx:AdvancedDataGridColumn headerText="User" labelFunction="getUserLogin" /> 

जो कहता है

private function getUserLogin(item:Object, column:AdvancedDataGridColumn) { 
    return item.user.login; 
} 

आइटम तर्क डेटा है कि अपने सेल प्राप्त कर रहा है हो जाएगा का एक उदाहरण है।

+1

मुझे यह जोड़ना चाहिए कि मुझे वास्तव में पता नहीं है कि आपका ऑब्जेक्ट मॉडल कैसा दिखता है, इसलिए आपको अपना लेबल फ़ंक्शन बनाना चाहिए, फिर पहले कथन पर ब्रेकपॉइंट डालें और डीबगर में "आइटम" की जांच करें ताकि आप सही को संबोधित कर सकें जिस संपत्ति को आप ढूंढ रहे हैं, जहां भी यह संरचना में है। – Robusto