Datagrid itemRenderer custom component formatting

OK, so this is my first attempt at an itenRenderer. This works below, but I have to imagine there is an easier way. There is also a problem with below, where the changed field (datafield=side) after the itemRenderer is applied, the text is all out of format, and there is a kind of selection on row one of that column. Obvisouly, though the translation is happening, I'm either overidding the wrong thing, or I'm doing something totally wrong.
Goal..... Show in the datagrid, the three colums below from date provided from elsewhere. (This all works), but in the 'side' data it comes in, in raw form as either an 'a' or 'b' or 'both', and I'm trying to display that as something more user friendly. So when both is read it changes it to 'No'.
Any help. This seems really easy, though I can't understanading hy my custom function screws with the cell selection, and formating?
---Main program---
<mx:DataGrid x="10" y="9" width="199" height="147" id="gdimmer_checkChannel" dataProvider="{ current_rack.getItemAt(0).rackLevels }"
  change="dimmerCheckCurrentSelection(event);"
  sortableColumns="false"
  selectedIndex="{ current_rack.getItemAt(0).currentCheckIndex }" >
<mx:columns>
  <mx:DataGridColumn headerText="UDN" dataField="udn"/>
  <mx:DataGridColumn headerText="DD" dataField="side" editable="false" itemRenderer="renderers.DataGridDDSide"/>
  <mx:DataGridColumn headerText="Circuit" dataField="circuit"/>
</mx:columns>
</mx:DataGrid>
--- Component Below ---
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        focusEnabled="true">
<s:Label id="lblData" text="{dataGridListData.label}" />
<fx:Script>
<![CDATA[
  override public function set data(value:Object):void
    if (value.side == 'both') { lblData.text = "  No" };
   if (value.side == 'a') { lblData.text = "  a" };
   if (value.side == 'b') { lblData.text = "  b" };
]]>
</fx:Script>
</s:MXDataGridItemRenderer>

See the latest post on my blog.  You also need to set super.data in the data
setter.
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui

Similar Messages

  • DataGrid with Custom Component not showing sub-components

    I'm hoping someone can enlighten me on this issue.
    I have a datagrid with one column which has an item renderer. It doesn't matter if the "text" data comes from a dataProvider or is static.
    If I do the following, only the first label will show up.
    <mx:DataGridColumn headerText="Column Title">
         <mx:itemRenderer>
               <mx:Component>
                   <mx:VBox>
                        <mx:Label text="{data.data1}" />
                        <mx:Label text="{data.data2}" />
                   </mx:VBox>
              </mx:Component>
         </mx:itemRenderer>
    </mx:DataGridColumn>
    However, if I change the VBox to a HBox both labels will show up.
    <mx:DataGridColumn headerText="Column Title">
          <mx:itemRenderer>
                <mx:Component>
                    <mx:HBox>
                        <mx:Label text="{data.data1}" />
                         <mx:Label text="{data.data2}" />
                    </mx:HBox>
               </mx:Component>
          </mx:itemRenderer>
    </mx:DataGridColumn>
    I'm using:
    Flex Builder 3 Standalone
    Version: 3.0.214193
    OS: Vista
    Any ideas or comments would be appreciated.

    Thanks for the reply KomputerMan.com. I've tried changing the dimensions of the VBox and no other labels appeared. Usually, when there is not enough room within the datagrid cell scrollbars will appear - you can experiment with the example below to see what I mean.
    As for radiobuttons in a datagrid, here you go. The DataGrid and its dataProvider are constructed in the same way you normally would.
    <mx:DataGridColumn headerText="Approve/Deny/Pending" width="170">
        <mx:itemRenderer>
            <mx:Component>
                <mx:HBox height="27" paddingLeft="10">
                    <mx:Script>
                        <![CDATA[
                            private function isSelected(s:Object, val:String):Boolean {
                                if ( s.toString() == val) {
                                    return true;
                                } else {
                                    return false;
                        ]]>
                    </mx:Script>
                    <mx:RadioButton groupName="approveType"
                        id="approved"
                        label="A"
                        width="33"
                        click="data.status='1'"
                        selected="{isSelected(data.status, '1')}"/>
                    <mx:RadioButton groupName="approveType"
                        id="denied"
                        label="D"
                        width="33"
                        click="data.status='2'"
                        selected="{isSelected(data.status, '2')}/>
                    <mx:RadioButton groupName="approveType"
                        id="Pending"
                        label="P"
                        width="33"
                        click="data.status='3'"
                        selected="{isSelected(data.status, '3')}/>
                </mx:HBox>
            </mx:Component>
        </mx:itemRenderer>
    </mx:DataGridColumn>

  • I want to add DataGrid in my custom component as a child component,

    I want to add DataGrid in my custom component as a child component, can we ?? or should i generate HTML for table creation in my custom component's renderer ?

    I did that:
    for example, if i want to add a Button control in my custom control:
    public void encodeChildren( FacesContext context ) throws IOException
             super.encodeChildren( context );
            //createComponent raises exception.... invalid component type     
            //UIComponent field = FacesContext.getCurrentInstance().getApplication().createComponent( javax.faces.component.html.HtmlInputText.class.getName() );
             HtmlInputText input = new HtmlInputText();
            getChildren().add( input );
        public boolean getRendersChildren()
            return true;
        }Can you give me any example, i want to add child components at run time basically..

  • Adding Visual custom component in spark DataGrid

    I am working with flex 4.5. I want to create Gauge component Datagrid.
    I am using open source com.betterthantomorrow.components. I have created custom components like this
        <?xml version="1.0" encoding="utf-8"?>
        <s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
                                                   xmlns:s="library://ns.adobe.com/flex/spark"
                                                   xmlns:mx="library://ns.adobe.com/flex/mx"
                                                   xmlns:bttc="com.betterthantomorrow.components.*"
                                                   xmlns:gauge="com.betterthantomorrow.components.gauge.*"
                                                   xmlns:objects="tekhnia.com.tekhniag.objects.*"
                                                   width="30%" height="65" backgroundColor="black" borderColor="black"
                                                   creationComplete="init(event)">
                  <fx:Declarations>
                            <mx:NumberFormatter precision="1" id="formatter" rounding="nearest" />
                  </fx:Declarations>
                  <fx:Script>
                            <![CDATA[
                                      import mx.events.FlexEvent;
                                      import mx.messaging.channels.StreamingAMFChannel;
                                      [Bindable]
                                      public var cpuValue:Number;
                                      [Bindable]
                                      public var memoryValue:Number;
                                      [Bindable]
                                      public var diskValue:Number;
                                      [Bindable]
                                      public var mycomp:String;
                                      [Bindable]
                                      public var serverName:String;
                                      [Bindable]
                                      public var statusImage:String;
                                      protected function init(event:FlexEvent):void
                                                var strValues:String;
                                                var strColors:String;
                                                var strAlphas:String;
                                                strColors="0x009900,0xFFFF00,0xDD0000";
                                                strValues="0,50,70,100";
                                                strAlphas=".8,.8,.8"
                                                var values:Array=strValues.split(",");
                                                var colors:Array=strColors.split(",");
                                                var alphas:Array=strAlphas.split(",");
                                                gauge1.setStyle("alertValues",values);
                                                gauge1.setStyle("alertColors",colors);
                                                gauge1.setStyle("alertAlphas",alphas);
                                                gauge2.setStyle("alertValues",values);
                                                gauge2.setStyle("alertColors",colors);
                                                gauge2.setStyle("alertAlphas",alphas);
                                                gauge.setStyle("alertValues",values);
                                                gauge.setStyle("alertColors",colors);
                                                gauge.setStyle("alertAlphas",alphas);
                                                gauge.invalidateDisplayList();
                                                gauge1.invalidateDisplayList();
                                                gauge2.invalidateDisplayList();
                            ]]>
                  </fx:Script>
                  <s:layout>
                            <s:HorizontalLayout/>
                  </s:layout>
                  <s:TileGroup width="101" paddingLeft="20" paddingRight="2">
                            <bttc:Gauge id="gauge"
                                                          diameter="50" width="50"
                                                          verticalCenter="0" horizontalCenter="-111"
                                                          minValue="1"  maxValue="10" value="{cpuValue}"  valueFormatter="{formatter}"
                                                          bigTicks="9" smallTicks="45" showMinMax="false" showValue="false" pointerColor="white"/>
                  </s:TileGroup>
                  <s:TileGroup width="101" paddingLeft="20" paddingRight="2">
                            <bttc:Gauge id="gauge1"
                                                          diameter="50" width="50"
                                                          verticalCenter="0" horizontalCenter="-111"
                                                          minValue="1"  maxValue="10" value="{memoryValue}"  valueFormatter="{formatter}"
                                                          bigTicks="9" smallTicks="45" showMinMax="false" showValue="false" pointerColor="white" automationName="T"/>
                  </s:TileGroup>
                  <s:TileGroup width="101" paddingLeft="20" paddingRight="2">
                            <bttc:Gauge id="gauge2"
                                                          diameter="50" width="50"
                                                          verticalCenter="0" horizontalCenter="-111"
                                                          minValue="1"  maxValue="10" value="{diskValue}"  valueFormatter="{formatter}"
                                                          bigTicks="9" smallTicks="45" showMinMax="false" showValue="false" pointerColor="white"/>
                  </s:TileGroup>
                  <s:TileGroup width="40" paddingTop="3">
                            <s:Image source="assets/led/big/{statusImage}" />
                            <s:Label  color="white" text="{serverName}" textAlign="center"/>
                  </s:TileGroup>
        </s:BorderContainer>
    I want to add this component in Datagrid. I have tried a lot on net. I didn't find any help. I read books as well.
    Please help me. I found somewhere on the site one liner answer : write grid renderer. I don't how to write grid renderer and pass the data values to it.
    I will be more thank full someone gives me pointer to sample grid renderer or code.

    What's the flow here?
    Do you want to pop-up a JSP in a window to prompt the user for extra information before submitting the check-in form? If so, you need a custom component to override the resource that draws the "submit" button on the form.
    Or, do you want to execute something like a web service during the check-in process? If so, do a validateStandard filter. See the 'DynamicPrefix' comonent in the howtocomponents:
    http://www.oracle.com/technetwork/middleware/content-management/index-092832.html

  • TabIndex in DataGrid ItemRenderer Component

    How to implement tabindex for the DataGrid ItemRenderer
    Component?Any
    idea Please.

    "ravi_bharathii" <[email protected]> wrote
    in message
    news:gbv9ps$k6r$[email protected]..
    > How to implement tabindex for the DataGrid ItemRenderer
    Component?Any
    > idea Please.
    Is this what you wanted?
    http://blogs.adobe.com/aharui/2008/08/datagrid_itemeditor_with_two_i.html

  • Datagrid itemRenderer/itemEditor trouble

    I have a datagrid in a Flex project, the data grid has an XML file as the source (contents below), now due to the way it is formatted (I cannot change this) some of the data I want to display is inside a tag that isnt at the initial array level. Here is the file:
    <?xml version="1.0" encoding="utf-8" ?>
    <Categories>
    <Category>
      <CategoryName>Cat 1</CategoryName>
      <CategoryLink>http://www.google.com</CategoryLink>
      <CategoryData>
       <CategoryDescription>This is the description of category 1</CategoryDescription>
       <CategoryHeader>My Category Title 1</CategoryHeader>
       <CategoryNumber>1</CategoryNumber>
      </CategoryData>
    </Category>
    </Categories>
    I need to display CategoryName, CategoryLink, CategoryData.CategoryDescription, CategoryData.CategoryNumber.
    Now I blindly dropped the datagrid into the project and bound it to the data source, I get the following returned for CategoryData:
    [object CategoryData_type]
    Not much use, but with what appears to be a hack I changed the code for the column to read dataField="CategoryData.CategoryDescription", and hooray it works. I didnt realise at the time that this was wrong, and when I dropped in an itemEditor things went wrong. When the datagrids load they display the correct data, but then when you try to edit any of the child property fields you get the following error:
    ReferenceError: Error #1069: Property CategoryData.CategoryDescription not found on valueObjects.Category_type and there is no default value.
    I have looked up the error and I realise that it means that there is no value for CategoryData.CategoryDescription, but if I can display it why can i not edit it! What do I have to do to make this work?
    Anyway, here is the code, it shows the default bound datagrid, a second datagrid with the hack applied, and a third hacked datagrid with an itemRenderer and itemEditor on the number columns
    Can you please take a look and tell me what I did wrong, well more to the point, if there is a doc that explains how to deal with XML like this then please point me at it.
    I did try changing the return type for ANY of the columns, but this fails, I also tried a labelFunction, but again I can get the [object CategoryData_type] to display, but I get the null reference exception as the datagrid loads if I try to get to the child props.
    Here is the Flex code:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx"
          xmlns:categories="services.categories.*"
          minWidth="955" minHeight="600">
    <fx:Script>
      <![CDATA[
       import mx.controls.Alert;
       import mx.events.FlexEvent;
       protected function dataGrid_creationCompleteHandler(event:FlexEvent):void
        getDataResult.token = categories.getData();
       protected function lftest(item:Object, column:GridColumn):String
        var t:String = item.CategoryData;
        return t;
      ]]>
    </fx:Script>
    <fx:Declarations>
      <s:CallResponder id="getDataResult"/>
      <categories:Categories id="categories"
              fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
              showBusyCursor="true"/>
      <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:DataGrid id="dataGrid" x="10" y="10" width="684"
        creationComplete="dataGrid_creationCompleteHandler(event)" editable="true"
        requestedRowCount="4">
      <s:columns>
       <s:ArrayList>
        <s:GridColumn width="100" dataField="CategoryName" headerText="CategoryName"></s:GridColumn>
        <s:GridColumn width="100" dataField="CategoryLink" headerText="CategoryLink"></s:GridColumn>
        <s:GridColumn width="180" dataField="CategoryData" headerText="CategoryData"></s:GridColumn>
       </s:ArrayList>
      </s:columns>
      <s:typicalItem>
       <fx:Object CategoryData="CategoryData1" CategoryLink="CategoryLink1"
            CategoryName="CategoryName1"></fx:Object>
      </s:typicalItem>
      <s:AsyncListView list="{getDataResult.lastResult}"/>
    </s:DataGrid>
    <s:DataGrid id="dataGrid2" x="10" y="147" width="684" editable="true" requestedRowCount="4">
      <s:columns>
       <s:ArrayList>
        <s:GridColumn width="100" dataField="CategoryName" headerText="CategoryName"></s:GridColumn>
        <s:GridColumn width="100" dataField="CategoryLink" headerText="CategoryLink"></s:GridColumn>
        <s:GridColumn width="180" dataField="CategoryData" headerText="CategoryData"></s:GridColumn>
        <s:GridColumn dataField="CategoryData.CategoryDescription" headerText="Desc"></s:GridColumn>
        <s:GridColumn dataField="CategoryData.CategoryHeader" headerText="Head"></s:GridColumn>
        <s:GridColumn dataField="CategoryData.CategoryNumber" headerText="Num"></s:GridColumn>
       </s:ArrayList>
      </s:columns>
      <s:typicalItem>
       <fx:Object CategoryData="CategoryData1" CategoryLink="CategoryLink1"
            CategoryName="CategoryName1"></fx:Object>
      </s:typicalItem>
      <s:AsyncListView list="{getDataResult.lastResult}"/>
    </s:DataGrid>
    <s:DataGrid id="dataGrid3" x="10" y="284" width="684" editable="true" requestedRowCount="4">
      <s:columns>
       <s:ArrayList>
        <s:GridColumn width="100" dataField="CategoryName" headerText="CategoryName"></s:GridColumn>
        <s:GridColumn width="100" dataField="CategoryLink" headerText="CategoryLink"></s:GridColumn>
        <s:GridColumn width="180" dataField="CategoryData" headerText="CategoryData"></s:GridColumn>
        <s:GridColumn headerText="Number">
         <s:itemRenderer>
          <fx:Component>
           <s:GridItemRenderer>
            <s:NumericStepper value="{data.CategoryData.CategoryNumber}" />
           </s:GridItemRenderer>
          </fx:Component>
         </s:itemRenderer>
        </s:GridColumn>
        <s:GridColumn dataField="CategoryData.CategoryNumber" headerText="Number">
         <s:itemEditor>
          <fx:Component>
           <s:GridItemEditor>
            <s:NumericStepper value="{data.CategoryData.CategoryNumber}" />
           </s:GridItemEditor>
          </fx:Component>
         </s:itemEditor>
        </s:GridColumn>
       </s:ArrayList>
      </s:columns>
      <s:typicalItem>
       <fx:Object CategoryData="CategoryData1" CategoryLink="CategoryLink1"
            CategoryName="CategoryName1"></fx:Object>
      </s:typicalItem>
      <s:AsyncListView list="{getDataResult.lastResult}"/>
    </s:DataGrid>
    </s:Application>
    All and any advice welcome.
    Shaine

    One last try, I now know for sure that the data in the file is loading, I created a labelFunction on the CategoryDescription column that looks like this:
    protected function dispData(item:Object, column:GridColumn):String
        var t:Object = item.CategoryData;
        var s:String = item.CategoryData.CategoryDescription;
        return s;
    Because it returns s, which I now know is undefined (which is the problem!) I managed to get a debug output. As you can see the value of t is the categorydata, and it appears to have the 3 values I need to get access to, but I have no idea how to do this. I also changed the function to read:
    protected function dispData(item:Object, column:GridColumn):String
    var t:Object = item.CategoryData;
    var s:String = t.CategoryDescription;
    return s;
    But this undefines t and s! Very confused
    this test2 (@d2e10a1)
    item valueObjects.Category_type (@91f8a51)
    [inherited]
    column spark.components.gridClasses.GridColumn (@d61b239)
    t valueObjects.CategoryData_type (@91f8c11)
    [inherited]
      _cacheInitialized_isValid false
      CategoryDescription "This is the description of category 1"
      CategoryHeader "My Category Title 1"
      CategoryNumber "1"
      _changedObjects mx.collections.ArrayCollection (@d5d9e41)
      _changeWatcherArray [] (@cfab061)
      _dminternal_model _CategoryData_typeEntityMetadata (@d4286a1)
      _doValidationCacheOfCategoryDescription null
      _doValidationCacheOfCategoryHeader null
      _doValidationCacheOfCategoryNumber null
      _doValidationLastValOfCategoryDescription null
      _doValidationLastValOfCategoryHeader null
      _doValidationLastValOfCategoryNumber null
      _internal_CategoryDescription "This is the description of category 1"
      _internal_CategoryHeader "My Category Title 1"
      _internal_CategoryNumber "1"
      _invalidConstraints [] (@ca50fd9)
      invalidConstraints_der <setter>
      _isValid false
      isValid_der <setter>
      managingService <setter>
      _managingService null
      _model _CategoryData_typeEntityMetadata (@d4286a1)
      _validationFailureMessages [] (@cfab0b1)
    s undefined
    As always all help welcome.
    Shaine
    Message was edited after a oops moment by: ProcessEndNow

  • Flex datagrid itemRenderer with different states

    Hi,
    I have a datagrid with allowMultipleSelection="true" & itemRenderer as my custom component. The custom component have 2 states "NORMAL" & "EXPANDED".
    Now on row selection the renderer should change its state from NORMAL to EXPANDED state. And if I am selecting multiple rows then all the selected rows should be in EXPANDED state.
    As soon as the selection goes the renderer should retain its NORMAL state.
    I am stuck. Please help me out.
    Thanks in advance.

    Use itemclick property of grid and it passes ListEvent  to the method given for itemclick. use selectedindices or selectedcells property in grid to find which are selected and change the states for the renderers of selected rows. U can get the renderer for the current selected row using event.itemRenderer property. Hope this helps.

  • Setting parameter of custom component

    Hi All,
    I assigned a custom component to a datagrid column with:
    dataGridColumn.itemRenderer = new ClassFactory(com.myNewComp);
    This component has a parameter.
    I try:
    dataGridColumn.itemRenderer['myParameter'] = 2;
    But not workng.
    How can I setup this parameter after is assigned to datagrid column?
    Thanks
    Johnny

    FYI,
    var _ItemRendere:ClassFactory;
    _ItemRendere = new ClassFactory();
    _ItemRendere.generator = com.myNewComp;
    _ItemRendere.properties = {myParameter:2};
    dataGridColumn.itemRenderer = _ItemRendere;
    Best,
    Johnny

  • Creating a custom component in multisim using *.lib and *.olb files

    i have  *.lib and *.olb files for a pspice model. which file i have to you while creating a custom component in multisim.

    Hello,
    Thanks for your question. In order to create simulatable custom components in Multisim you need a SPICE model (Multisim can also understand PSpice Models). The file format for SPICE model can be different according to the manufacturer, for instance: *.cir, *.lib, *.llb. At the end of the day these files are text files that you can open with a text editor, therefore, you can simply copy and paste the model in Multisim.
    Here are two good resources on component creation:
    Component Creation 101
    Creating a Custom Component in NI Multisim
    When you reach the step where you need to enter the SPICE model, simply open the *.lib or *.olb file with a text editor, and copy and paste the model.
    Hope this helps.
    Fernando D.
    National Instruments

  • Could not resolve mx:DataGrid to a component implementation

    I'm very new at this. Building a mobile app. Running the latest Flex/FlashBuilder (4.6). When I compile I get this error: "could not resolve <mx:DataGrid> to a component implementation". Here is my code:
    <?xml version="1.0" encoding="utf-8"?>
    <!-- dpcontrols/DataGridPassData.mxml -->
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx"
                        title="Jobs List">
              <fx:Script>
                        <![CDATA[
                                  import mx.collections.*;
                                  private var DGArray:Array = [
                                            {Lease:'Bagby Heirs', Well:'1', Location:'Quitman', Customer:'Fair Oil Company', ScheduleDate:'2/23/2012', ServiceDate:'5/16/2012'},
                                            {Lease:'ITU', Well:'301', Location:'Ingram Trinity', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                            {Lease:'ITU', Well:'81', Location:'ITU', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                            {Lease:'Tolliver A', Well:'5', Location:'Turner Town', Customer:'SEDI', ScheduleDate:'4/16/2012', ServiceDate:'5/11/2012'},
                                            {Lease:'W R Cady', Well:'1', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                            {Lease:'Royal National Bar', Well:'2', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                            {Lease:'Pan American L', Well:'1', Location:'Chandler', Customer:'East Texas Oil & Gas', ScheduleDate:'5/14/2012', ServiceDate:'6/8/2012'},
                                            {Lease:'Paluxy B Sand', Well:'5', Location:'West Tyler', Customer:'Culver & Cain', ScheduleDate:'6/1/2012', ServiceDate:'5/25/2012'},
                                            {Lease:'Wh Pittman Hei', Well:'2', Location:'Quitman', Customer:'Southwest Operating, Inc.', ScheduleDate:'7/10/2012', ServiceDate:'6/18/2012'},
                                            {Lease:'Vivian Pruitt', Well:'1', Location:'Crow - Hwy 80M', Customer:'Buffco Productions, Inc.', ScheduleDate:'8/7/2012', ServiceDate:'8/29/2012'}
                                  [Bindable]
                                  public var initDG:ArrayList;
                                  //Initialize initDG ArrayList variable from the Array.
                                  //If you use this technique to process an HTTPService,
                                  //WebService, or RemoteObject result, use an ArrayCollection
                                  //rather than an ArrayList.
                                  public function initData():void {
                                            initDG=new ArrayList(DGArray);
                        ]]>
              </fx:Script>
              <!--s:states>
              <s:State name="loginState"/>
              <s:State name="State1"/>
              </s:states-->
              <fx:Declarations>
                        <!-- Place non-visual elements (e.g., services, value objects) here -->
                          <fx:Component className="AlertMsgDay">
                                  <s:SkinnablePopUpContainer x="70" y="300">
                                            <s:TitleWindow title="Filtering" close="close()">
                                                      <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                                <s:Label text="This button will filter jobs to show only TODAY."/>
                                                                <s:Button label="OK" click="close()"/>
                                                      </s:VGroup>
                                            </s:TitleWindow>
                                  </s:SkinnablePopUpContainer>
                        </fx:Component>
                        <fx:Component className="AlertMsgWeek">
                                  <s:SkinnablePopUpContainer x="70" y="300">
                                            <s:TitleWindow title="Filtering" close="close()">
                                                      <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                                <s:Label text="This button will filter jobs to show only THIS WEEK."/>
                                                                <s:Button label="OK" click="close()"/>
                                                      </s:VGroup>
                                            </s:TitleWindow>
                                  </s:SkinnablePopUpContainer>
                        </fx:Component>
              </fx:Declarations>
              <s:BorderContainer x="10"  y="111" borderColor="#808080" cornerRadius="5" borderWeight="2" width="98%" height="369">
                        <s:Scroller width="100%" height="363" verticalScrollPolicy="on">
                                  <s:Group width="100%" height="100%">
                                            <mx:DataGrid id="myGrid" width="900" height="350" dataProvider="{initDG}" >  <<<< THE ERROR IS HERE
                                                      <mx:columns>
                                                                <mx:DataGridColumn dataField="Lease" />
                                                                <mx:DataGridColumn dataField="Well" />
                                                                <mx:DataGridColumn dataField="Location" />
                                                                <mx:DataGridColumn dataField="Customer" />
                                                                <mx:DataGridColumn dataField="ScheduleDate" headerText="Schedule Date" />
                                                                <mx:DataGridColumn dataField="ServiceDate" headerText="Service Date" />
                                                      </mx:columns>
                                            </mx:DataGrid>
                                  </s:Group>
                        </s:Scroller>
              </s:BorderContainer>
              <s:Label x="10" y="10" width="96" height="53" fontSize="24" text="Sort by:"
                                   verticalAlign="middle"/>
              <s:Button id="btn_show_today" x="104" y="11" width="105" height="53" label="Today"
                                    fontSize="13" fontWeight="bold" click="(new AlertMsgDay()).open(this, false);"/>
              <s:Button id="btn_show_week" x="216" y="11" width="105" height="53" label="Week"
                                    fontSize="13" fontWeight="bold" click="(new AlertMsgWeek()).open(this, false);"/>
              <s:Button x="348" y="10" width="184" height="53" label="Edit this Job" fontSize="18" click="navigator.pushView(views.JobFormView);"/>
    </s:View>

    I'm very new at this. Building a mobile app. Running the latest Flex/FlashBuilder (4.6). When I compile I get this error: "could not resolve <mx:DataGrid> to a component implementation". Here is my code:
    <?xml version="1.0" encoding="utf-8"?>
    <!-- dpcontrols/DataGridPassData.mxml -->
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx"
                        title="Jobs List">
              <fx:Script>
                        <![CDATA[
                                  import mx.collections.*;
                                  private var DGArray:Array = [
                                            {Lease:'Bagby Heirs', Well:'1', Location:'Quitman', Customer:'Fair Oil Company', ScheduleDate:'2/23/2012', ServiceDate:'5/16/2012'},
                                            {Lease:'ITU', Well:'301', Location:'Ingram Trinity', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                            {Lease:'ITU', Well:'81', Location:'ITU', Customer:'Southwest Operating, Inc.', ScheduleDate:'3/19/2012', ServiceDate:'4/25/2012'},
                                            {Lease:'Tolliver A', Well:'5', Location:'Turner Town', Customer:'SEDI', ScheduleDate:'4/16/2012', ServiceDate:'5/11/2012'},
                                            {Lease:'W R Cady', Well:'1', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                            {Lease:'Royal National Bar', Well:'2', Location:'Coffield', Customer:'Green River Resource', ScheduleDate:'5/9/2012', ServiceDate:'4/10/2012'},
                                            {Lease:'Pan American L', Well:'1', Location:'Chandler', Customer:'East Texas Oil & Gas', ScheduleDate:'5/14/2012', ServiceDate:'6/8/2012'},
                                            {Lease:'Paluxy B Sand', Well:'5', Location:'West Tyler', Customer:'Culver & Cain', ScheduleDate:'6/1/2012', ServiceDate:'5/25/2012'},
                                            {Lease:'Wh Pittman Hei', Well:'2', Location:'Quitman', Customer:'Southwest Operating, Inc.', ScheduleDate:'7/10/2012', ServiceDate:'6/18/2012'},
                                            {Lease:'Vivian Pruitt', Well:'1', Location:'Crow - Hwy 80M', Customer:'Buffco Productions, Inc.', ScheduleDate:'8/7/2012', ServiceDate:'8/29/2012'}
                                  [Bindable]
                                  public var initDG:ArrayList;
                                  //Initialize initDG ArrayList variable from the Array.
                                  //If you use this technique to process an HTTPService,
                                  //WebService, or RemoteObject result, use an ArrayCollection
                                  //rather than an ArrayList.
                                  public function initData():void {
                                            initDG=new ArrayList(DGArray);
                        ]]>
              </fx:Script>
              <!--s:states>
              <s:State name="loginState"/>
              <s:State name="State1"/>
              </s:states-->
              <fx:Declarations>
                        <!-- Place non-visual elements (e.g., services, value objects) here -->
                          <fx:Component className="AlertMsgDay">
                                  <s:SkinnablePopUpContainer x="70" y="300">
                                            <s:TitleWindow title="Filtering" close="close()">
                                                      <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                                <s:Label text="This button will filter jobs to show only TODAY."/>
                                                                <s:Button label="OK" click="close()"/>
                                                      </s:VGroup>
                                            </s:TitleWindow>
                                  </s:SkinnablePopUpContainer>
                        </fx:Component>
                        <fx:Component className="AlertMsgWeek">
                                  <s:SkinnablePopUpContainer x="70" y="300">
                                            <s:TitleWindow title="Filtering" close="close()">
                                                      <s:VGroup horizontalAlign="center" paddingTop="8" paddingBottom="8" paddingLeft="8" paddingRight="8" gap="5" width="100%">
                                                                <s:Label text="This button will filter jobs to show only THIS WEEK."/>
                                                                <s:Button label="OK" click="close()"/>
                                                      </s:VGroup>
                                            </s:TitleWindow>
                                  </s:SkinnablePopUpContainer>
                        </fx:Component>
              </fx:Declarations>
              <s:BorderContainer x="10"  y="111" borderColor="#808080" cornerRadius="5" borderWeight="2" width="98%" height="369">
                        <s:Scroller width="100%" height="363" verticalScrollPolicy="on">
                                  <s:Group width="100%" height="100%">
                                            <mx:DataGrid id="myGrid" width="900" height="350" dataProvider="{initDG}" >  <<<< THE ERROR IS HERE
                                                      <mx:columns>
                                                                <mx:DataGridColumn dataField="Lease" />
                                                                <mx:DataGridColumn dataField="Well" />
                                                                <mx:DataGridColumn dataField="Location" />
                                                                <mx:DataGridColumn dataField="Customer" />
                                                                <mx:DataGridColumn dataField="ScheduleDate" headerText="Schedule Date" />
                                                                <mx:DataGridColumn dataField="ServiceDate" headerText="Service Date" />
                                                      </mx:columns>
                                            </mx:DataGrid>
                                  </s:Group>
                        </s:Scroller>
              </s:BorderContainer>
              <s:Label x="10" y="10" width="96" height="53" fontSize="24" text="Sort by:"
                                   verticalAlign="middle"/>
              <s:Button id="btn_show_today" x="104" y="11" width="105" height="53" label="Today"
                                    fontSize="13" fontWeight="bold" click="(new AlertMsgDay()).open(this, false);"/>
              <s:Button id="btn_show_week" x="216" y="11" width="105" height="53" label="Week"
                                    fontSize="13" fontWeight="bold" click="(new AlertMsgWeek()).open(this, false);"/>
              <s:Button x="348" y="10" width="184" height="53" label="Edit this Job" fontSize="18" click="navigator.pushView(views.JobFormView);"/>
    </s:View>

  • Using Predicate filters in a Custom component

    Hello,
    I have a cusom datagrid component, which gets it's data from a XMLListCollection object. The xmlList is a simple <employess><employe1><fname/><lname/></emloye1></employees>
    I have a text input as a part of this custom component. I am creating a change event on the control to trigger a filter function filterGrid(). I want the frid to dynamically change data as the user types the characters. Currently i have hardcoded my predicate filter to filter the grid whenever the first char matches J. How can i change this to read the chars from the text input.
                private function filterGrid(event:Event):void {
                    if(text1.text!="") {
                        myXMLCollection.filterFunction = filterEmp;
                    }else {
                        myXMLCollection.filterFunction = null;
                    myXMLCollection.refresh();
                private function filterEmp(item:XML):Boolean {
                    var searchResult:XMLList;
                    searchResult = item.(/^J/.test( fname ) );//Help need here
                    trace(searchResult);
                    if(searchResult.length()>0) {
                        return true;
                    return false;
    Thanks,

    I got this to work
    var pattern2:RegExp = new RegExp(text1.text, "i");\
    searchResult = item.(pattern2.test( fname ) || pattern2.test(lname) );
    But have another problem, the regex matches any charater and not the first chars as i type them for example
    IF i have
    John Macey
    Tracy Jordon
    and if i type 'c' in the textnpt i get both John Macey and Tracy Jordon.
    Will dig further,

  • Actionscript in a Custom Component

    Can anyone tell me if you can put actionscript inside of a
    custom component? It throws errors anytime I try to do it.
    I have a horizontallist component that is being populated
    with an itemrenderer which holds an image component. The
    horizontallist takes fifteen images and loads them into the
    itemrenderers, creating a scrollable image slideshow.
    I am trying to get it to check to see if the image loaded
    successfully, and if not, either set the visibility of that image
    component to false, or remove it.
    Here is the code for the horizontallist:
    <mx:HorizontalList
    id="imageBar"
    itemRenderer="listingImage"
    height="330"
    width="925"
    paddingLeft="5"
    paddingRight="5"
    rollOverColor="#FFFFFF"
    selectionColor="#FFFFFF"
    >
    And the code for the custom component.....
    <mx:Canvas
    xmlns:mx="
    http://www.adobe.com/2006/mxml"
    height="320"
    width="400"
    verticalScrollPolicy="off"
    horizontalScrollPolicy="off"
    >
    <mx:Image
    source="
    http://www.urladdress.com/idx/rmls/images/resimages/{data.id}_{data.imageNum}.jpg"
    height="300" scaleContent="true"
    />
    </mx:Canvas>
    I'm pretty new to Flex, so any help would be great!

    just insert the script tags in the custom component and place
    your actionscript within those script tags. So in your case just
    insert the following script tags above the image control...
    <mx:Script>
    <![CDATA[
    // actionscript goes here
    ]]>
    </mx:Script>
    - Tony

  • Nest array in a custom component

    Hello and thanks in advance,
    I am building a custom datagrid component name custDG. It is a canvas containing the DG and some other visuals. So the actual component is based on canvas and has a DataGrid nested.
    I have also build a custom class name config based on Array to hold the DG column information
    AND a custom object class name col to hold each column information inside the config array class...
    My question is how to make it possible for user to nest the array and columns inside the custom component when adds it to an application. For example:
    <mike:custDG... >
         <mike:config>
              <mike:col.../>
              <mike:col.../>
              <mike:col.../>
         </mike:config>
    </mike:custDG... >
    Want to make something similar to the columns-datagridcolumn thingie but with custom classes in a custom component.
    Anyone plz?
    Thanks

    I finally found how to set a default skin to a custom component so that users of my component will not have to set again the skinClass value of my component.
    You have to create a defaults.css file at the root of your library and tell the compiler to take it into account.
    The remaining problem is about the compiler. There are some steps before success and they are a bit mysterious/unclear....
    I found 2 or 3 blog articles explaining those steps but the compiler arguments to use are all differents in each article...
    Here are the links I found:
    http://www.unitedmindset.com/jonbcampos/2010/05/12/creating-custom-spark-components/
    http://www.betadesigns.co.uk/Blog/2010/05/14/default-skin-for-custom-flashbuilder-componen ts/
    http://flexdevtips.blogspot.com/2009/06/default-stylesheet-in-swc-flex-library.html
    Following the first article guidelines has been successful for me but I'm not marking this topic as Resolved because I'd like some answers about this whole thing...

  • Access data in custom component.

    Hi Everyone,
                    I am new to Flex soo pardon me if my questions are quite basic. I have searched a lot before posting here, might be I was not looking in the right direction. Please redirect me to the path that leads to the solution of the problem. I really appreciate any help that I can get.
    I'm followiing this video tutorial.
    http://www.gotoandlearn.com/play.php?id=100
    All was going fine, until the tutor wanted to add custom component in the application. He added the HBox which I couldn't find in Flash Builder  4.6 so I added HGroup instead in my new component. Now when I want to use the data that was fetched in the parent component in custom component it gives me error. Here is the code and their file names.
    File: SearchHomeView.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark" title="Twitter Search">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
            <s:HTTPService result="onResult(event)" id="service" url="http://search.twitter.com/search.atom?q=adobe">
            </s:HTTPService>
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import flash.utils.flash_proxy;
                import mx.collections.ArrayCollection;
                import mx.rpc.events.ResultEvent;
                [Bindable]
                private var ac:ArrayCollection;
                private function onResult(event:ResultEvent):void
                    ac = event.result.feed.entry as ArrayCollection;
                    trace(data);
                    trace(ac);
                private function doSearch(event:MouseEvent):void
                    //service.url = "http://search.twitter.com/search.atom?q=" + tearch.text;
                    service.url = "http://search.twitter.com/search.atom?q=adobe";
                    service.send();
            ]]>
        </fx:Script>
        <s:TextInput x="25" y="26" width="146" id="tearch"/>
        <s:Button x="224" y="26" height="33" label="Search" click="doSearch(event)" />
        <s:List dataProvider="{ac}" itemRenderer="tweet" x="25" y="92" width="274" height="278"></s:List>
    </s:View>
    File: tweet.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
              xmlns:s="library://ns.adobe.com/flex/spark" width="400" height="300">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <s:Image width="50" height="50" source="{parentDocument.data.link.getItemAt('1').href}">
        </s:Image>
        <s:TextBase width="100%" text="">
        </s:TextBase>
    </s:HGroup>
    When I use source to be source="{parentDocument.data.link.getItemAt('1').href} ... it removes the error, but displays nothing on the resulting app.
    When I use source to be source="{data.link[1].href} ... it gives the error,
    Multiple markers at this line:
    -1120: Access of undefined property data.
    -parentDocument
    What needs to be done to use the item renderer right in custom component ? Please tell me the solution to it... I'm stuck on it for quite a few time.
    Thanks
    Bilal Ahmad

    Hello Ravi,
    one option is the create a public attribute to share your value note data with other components.
    Another option is a function group with two function modules "SET_" and "GET_".
    I´m sure one of the webclient UI Gurus here in this forum could share less "dirty" ways with you.
    Kind regards
    Manfred

  • Datagrid itemRenderer - Help needed

    I am having trouble getting this little bit of code working.  I am trying to build an adhoc SQL generator, where the user selects the list of fields and then is able to set the WHERE criteria in a dataGrid, each row has field, criteria (ComboBox -equals, less than, etc), Low (editable), High (editable-Text or ComboBox lookup), AND/OR static ComboBox.  Some of the field selections could be regular text based fields like Name and other fields selected could be lookup fields like State.  I would like to be able to on rows that are TextInput render out a TextInput for LowValue and HighValue columns and for lookup fields render out a ComboBox with the dataProvider being set by a call to addComboData.
    addComboData simply uses the myDataGrid.selectedItem.fieldname to determine which of the lookup table to use and assigns that collection to CBoxdataProvider.  Seems simple enough but I have not been able to figure it out, some modifications seem to work, but only for a single dg cell others give me a list but does not populate lowValue but kill all other renderers.  All help is appreciated.
    <mx:DataGridColumn headerText="Low"  rendererIsEditor="true"  editorDataField="selectedItem" dataField="lowValue" textAlign="center">
    <mx:itemRenderer>
      <mx:Component>
        <mx:HBox horizontalScrollPolicy="off" verticalScrollPolicy="off" horizontalAlign="center">
           <mx:ComboBox  initialize="outerDocument.addComboData()" dataProvider="{ outerDocument.CBoxdataProvider }" labelField="Description" textAlign="left"  visible="{data.showCombo}" />
          <mx:TextInput id="lowLabel"  visible="{!data.showCombo}" />
       </mx:HBox>
      </mx:Component>
    </mx:itemRenderer>
    </mx:DataGridColumn>

    Setting the selected item is not the same as a click.  If you created the renderer correctly the style should change when you actually click on the item. (Does it?)
    Or are you just trying to get the first row's background to be a different style when the datagrid first shows?  (Initialization problem or not working at all?)

Maybe you are looking for

  • Toggle Option in Process Chain not working

    Hello SDNers, I am experiencing the below scenario with one of my process chain. Process Chain FLow Start | | Local Chain (To delete the already existing file from Application Server(ZFTP)) | Local chain to rename the file | | Local chain (Load data

  • How to connect with sony bravia.

    Hi, I'm trying to connect my Mac pro with my Sony Bravia LCD TV. I bought a MiniDP to VGA cable and I already had a VGA extension to connect with my TV. I used to use that cable to connect my other laptop and worked ok with frequent "no synchronisati

  • Contacts getting mixed up by BB

    Hi For some reason out of the blue my contacts get mixed up by my BlackBerry q10 Eg. "Peter Miller"s details are suddenly (inconsistently) merged with "John Smith". Both are saved contacts. This keeps happening without my touching the phone. I can ge

  • How to change the Tab name for a custom field added in IC Winclient

    I have successfully added a field using eewb and it is appearing on my transaction in CIC0 but it is on a tab that says Customer Fields.  In EEWB a BADI called ZEEW_CUSTOMER_H01 was generated and it has a methods called  CRM_CUSTOMER_H_SET_TITLE.  It

  • How do I get the numbers to appear for links on a web page

    This is an accessibility feature I once had and now can't remember how to do it. It allowed me to enter a number rather than clicking on a link