2009-04-14 23 views
6

में डेटाग्रिड पंक्ति के लिए पृष्ठभूमि रंग सेट करना मुझे फ्लेक्स में डेटाग्रिड में एक पंक्ति के लिए पृष्ठभूमि रंग को प्रोग्रामेटिक रूप से बदलने की आवश्यकता है। मैंने नेट को खराब कर दिया है और "dg.setPropertiesAt" के संदर्भ में पाया है, जो एक समर्थित विधि नहीं है (कंपाइलर के अनुसार)। इसके अलावा, डीजी की "drawRowBackground" विधि को बढ़ाने के लिए सुझाव हैं लेकिन मुझे पृष्ठभूमि को बाहरी रूप से सेट करने की आवश्यकता है (डीजी के अंदर तर्क से नहीं)।एडोब फ्लेक्स

कोई भी और सभी सुझाव आपका स्वागत है।

TIA, बॉब

उत्तर

6

आप क्रम में एक itemRenderer उपयोग करने के लिए यह पूरा करना होगा। अधिक जानकारी के लिए निम्न उदाहरण देखें:

http://butterfliesandbugs.wordpress.com/2007/07/11/using-an-itemrenderer-to-change-the-background-of-a-datagrid-cell/

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postId=61&productId=2

+0

ऐसा लगता है कि यह ऐसा करेगा ... धन्यवाद, बॉब –

3

मैं एक ही बात सोच रहा था सिर्फ एक दिन के पहले। यदि आपके पास फ्लेक्स का प्रो संस्करण है, तो इसके एडवांस्डडेटाग्रिड में इसे प्रबंधित करने के लिए अंतर्निहित "स्टाइल फ़ंक्शन" संपत्ति है। आप केवल नियमित रूप से डेटा ग्रिड काम मिल गया है, तो यह मदद कर सकता है:

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12548

एक टिप्पणी वहाँ styleFunction के प्रलेखन के लिए लिंक:

http://livedocs.adobe.com/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridBase.html#styleFunction

इसके अलावा, एक प्रयोग करने के लिए Stiggler के सुझाव itemRenderer आपका दूसरा सहारा है।

0
dg.setPropertiesAt(3, {backgroundColor:0xFF0000}); 

जहां आपका डेटाग्रिड डीजी है और नंबर 3 आपके ग्रिड का पंक्ति रंग है।

2

मैं इस तरह डेटा ग्रिड वर्ग का विस्तार और अपने ही विधि बनाकर यह कामयाब रहे:

public function paintRow(rowNumber:Number,color:uint):void{ 
var rowBGs:Sprite=Sprite(listContent.getChildByName("rowBGs")); 
drawRowBackground(rowBGs,rowNumber,listContent.rowInfo[rowNumber].y,listContent.rowInfo[rowNumber].height,color,null); 
} 

यह datagrid वर्ग के drawRowBackgrounds विधि से प्रेरित था।

उम्मीद है कि यह मदद करता है।

3

उपयोग इस spark.DataGrid

साथ

DataGridRowBackground.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<s:DefaultGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/halo" 
    implements="spark.components.gridClasses.IGridVisualElement" 
    backgroundColor="{data.color}" background="true"> 

    <fx:Script> 
     <![CDATA[ 

    import spark.components.Grid; 

    public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void 
    { 
     if (!grid.dataProvider || rowIndex >= grid.dataProvider.length) 
      data = null; 
     else 
      data = grid.dataProvider.getItemAt(rowIndex); 
    } 

     ]]> 
    </fx:Script> 
</s:DefaultGridItemRenderer> 

अपने ऐप्लिकेशन कोड में:

<s:DataGrid> 
    <s:rowBackground> 
     <fx:Component><my:DataGridRowBackground /></fx:Component> 
    </s:rowBackground> 
</s:DataGrid> 

प्रमुख तत्व है जो आप अपने dataProvider करने के लिए बाध्य कर देता है IGridVisualElement इंटरफ़ेस । इस इंटरफेस को ग्रिडलाउट द्वारा बुलाया जाता है। देखें: http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as। आप बैकग्राउंड रेंडरर के रूप में किसी भी IVisualElement का उपयोग कर सकते हैं, लेकिन एस के साथ: DefaultGridItemRenderer आपके पास बॉक्स से कुछ कार्यक्षमता है।

उम्मीद है कि यह

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