dataGrid filter failure
Kristtee Jul 20, 2010 4:55 AMHello there!
I am a designer trying my hands on AS3. All I wanted is to filter the datagrid based on textinput. Here is my xml and as3 code. Can somebody point me to where it went wrong. Please. Appreciate your time and help.
---------------xml------------------------
<?xml version="1.0" encoding="UTF-8"?>
<leads>
<lead>
<name>JeanPhil</name>
<cat>AS-Flash-Flex</cat>
<ur>http://jeanphiblog.media-box.net/dotclear/index.php</ur>
</lead>
<lead>
<name>Flashcats</name>
<cat>Flash Cateltys</cat>
<ur>http://flashcats.net</ur>
</lead>
<lead>
<name>Muchado Blog</name>
<cat>Flex 4 Blog</cat>
<ur>http://www.rictus.com/muchado/</ur>
</lead>
</leads>
--------------------as3 code----------------
import fl.controls.DataGrid;
import fl.controls.TextInput;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import flash.net.*;
var xmldata:XML;
var dp:DataProvider = new DataProvider();
var dg:DataGrid = new DataGrid();
var searchTI:TextInput = new TextInput();
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadedData);
loader.load(new URLRequest("qLeads.xml"));
function loadedData(evt:Event):void {
xmldata=new XML(evt.target.data);
var dp:DataProvider=new DataProvider(xmldata);
var searchTI:TextInput = new TextInput();
searchTI.move(120,40);
searchTI.addEventListener(Event.CHANGE, changeHandler);
addChild(searchTI);
var nameCol:DataGridColumn=new DataGridColumn("name");
nameCol.headerText="Site Header";
var catCol:DataGridColumn=new DataGridColumn("cat");
catCol.headerText="Category";
catCol.width=180;
var dg:DataGrid = new DataGrid();
dg.move(10, 70);
dg.width=520;
dg.addColumn(nameCol);
dg.addColumn(catCol);
dg.dataProvider=dp;
addChild(dg);
}
function changeHandler(event:Event):void {
var arr:Array=dp.toArray();
var filteredArr:Array=arr.filter(filterDP);
dg.dataProvider=new DataProvider(filteredArr);
}
function filterDP(obj:Object, idx:int, arr:Array):Boolean {
var txt1:String=searchTI.text;
var txt2:String=obj.item.substr(0,txt1.length);
if (txt1.toLowerCase()==txt2.toLowerCase()) {
return true;
}
return false;
}
----------------------
note: i have a textinput and datagrid comps in my Library.
Thanks and appreciate your time
Krish
