0 Replies Latest reply: Jul 28, 2010 10:59 PM by Kristtee RSS

    DataGrid filtering trouble

    Kristtee Community Member

      hi

      i have simple xml data and loaded into a dg on stage and have textinput field for filtering. code as follow..........

      --------------------

      import fl.controls.DataGrid;
      import fl.data.DataProvider;
      import fl.controls.TextInput;
      import fl.controls.dataGridClasses.DataGridColumn;-

       

      var dp:DataProvider;

       

      var itemTextInput:TextInput = new TextInput();
      itemTextInput.move(10, 10);
      itemTextInput.addEventListener(Event.CHANGE, changeHandler);
      addChild(itemTextInput);

       

      var dg:DataGrid = new DataGrid();
      dg.addColumn("columnA");
      dg.addColumn("columnB");
      dg.width = 300;
      dg.move(10, 40);
      addChild(dg);

       

      var url:String = "itemdata.xml";
      var req:URLRequest = new URLRequest(url);
      var ldr:URLLoader = new URLLoader();
      ldr.addEventListener(Event.COMPLETE, comHandler);
      ldr.load(req);

       

      function comHandler(evt:Event):void{
          var xmldp:XML = new XML(evt.target.data);
          dp = new DataProvider(xmldp);
          dg.dataProvider = dp;
      }

       

      function changeHandler(event:Event):void {
          var arr:Array = dp.toArray();
          var filteredArr:Array = arr.filter(filterDataProvider);
          dg.dataProvider = new DataProvider(filteredArr);
      }

       

      function filterDataProvider(obj:Object, idx:int, arr:Array):Boolean {
          var txt1:String = itemTextInput.text;
          var txt2:String = obj.item.substr(0, txt1.length);
          if (txt1.toLowerCase() == txt2.toLowerCase()) {
              return true;
          }
          return false;
      }

      ----------------------------

      here xml

       

      <?xml version="1.0" encoding="UTF-8"?>
      <items>
          <item columnA="Apples" columnB="Pineapples" />
          <item columnA="Bananas" columnB="Woodapples" />
          <item columnA="Watermelons" columnB="Pomelos" />
          <item columnA="Oranges" columnB="Plums" />
          <item columnA="Mangos" columnB="Avacados" />
          <item columnA="Coconuts" columnB="Grapes" />
      </items>

      -----------------

      when i try to filter i get this error

       

      TypeError: Error #1010: A term is undefined and has no properties.
          at itemdg_fla::MainTimeline/filterDataProvider()
          at Array$/_filter()
          at Array/http://adobe.com/AS3/2006/builtin::filter()
          at itemdg_fla::MainTimeline/changeHandler()
          at flash.events::EventDispatcher/dispatchEventFunction()
          at flash.events::EventDispatcher/dispatchEvent()
          at fl.controls::TextInput/handleChange()

      -------------------------

       

      PLEASE GUIDE ME TO WHERE I AM WRONG

       

      APPRECIATE YOUR TIME AND HELP

      krs