Flash AS3 Data Grid sort options not working

I cannot for the life of me sort the search of my Data Grid.

Also I want to make another column with .jpg/.bmp content but alas cannot do :smile:

Is there anyone who could please help be much appreciated :smile:

stage.scaleMode = StageScaleMode.NO_SCALE;

stop();

/******** ! I M P O R T ! ********************************/

import com.greensock.*;
import com.greensock.easing.*;
import com.greensock.plugins.*;
import flash.display.StageScaleMode;
import flash.xml.*;
import fl.controls.TextInput;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import fl.controls.ScrollPolicy;
import fl.events.DataGridEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import fl.controls.Button;

/******** ! A R R A Y S ! ********************************/

var mp3_Artist: Array = new Array();
var mp3_Album: Array = new Array();
var mp3_Title: Array = new Array();
var mp3_Time: Array = new Array();
var mp3_Size: Array = new Array();
var mp3_Bitrate: Array = new Array();
var mp3_Genre: Array = new Array();
var mp3_Year: Array = new Array();
var mp3_Comment: Array = new Array();

padBase_MC.pad.numPad_0.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_1.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_2.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_3.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_4.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_5.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_6.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_7.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_8.addEventListener(MouseEvent.CLICK, padNum);
padBase_MC.pad.numPad_9.addEventListener(MouseEvent.CLICK, padNum);

/******** ! T E X T  F O R M A T ! ***********************/

var tf:TextFormat = new TextFormat();
tf.font = "Teen";
tf.size = 13;
tf.color = 0x999999;

var tf2:TextFormat = new TextFormat();
tf2.font = "Teen";
tf2.size = 13;
tf2.color = 0x777777;

var tf3:TextFormat = new TextFormat();
tf3.font = "Teen";
tf3.size = 13;
tf3.color = 0x999999;

/******** ! V A R I A B L E S ! **************************/

var xmlData:XML;
var tracksInDirectory:Number;
var xmlLoader:URLLoader = new URLLoader();

var dp:DataProvider = new DataProvider();

var A:DataGridColumn = new DataGridColumn("Artist");
A.headerText = "ARTIST";
A.width = 215;
A.resizable = false;
A.cellRenderer = MultiLineCell;

var B:DataGridColumn = new DataGridColumn("Title");
B.headerText = "NAME";
B.width = 215;
B.resizable = false;
B.cellRenderer = MultiLineCell;

var C:DataGridColumn = new DataGridColumn("Duration");
C.headerText = "DURATION";
C.width = 102;
C.resizable = false;
C.cellRenderer = CenterAlignCell;

var D:DataGridColumn = new DataGridColumn("Track");
D.headerText = "No.";
D.width = 50;
D.resizable = false;
D.cellRenderer = CenterAlignCell;

var myDG:DataGrid = new DataGrid();
myDG.addColumn(D);
myDG.addColumn(A);
myDG.addColumn(B);
myDG.addColumn(C);


myDG.verticalScrollPolicy = ScrollPolicy.AUTO;
myDG.setSize(584, 229);
myDG.rowHeight = 40;
myDG.move(0,4);

myDG.dataProvider = dp;
myDG.headerHeight = 30;
myDG.setStyle("headerTextFormat", tf);
myDG.setRendererStyle("textFormat", tf2);

playList.addChild(myDG);

listOut_BTN.addEventListener(MouseEvent.CLICK, listOutIn);
listIn_BTN.addEventListener(MouseEvent.CLICK, listInOut);
padOut_BTN.addEventListener(MouseEvent.CLICK, padOutIn);
padIn_BTN.addEventListener(MouseEvent.CLICK, padInOut);
padBase_MC.pad.itemTextInput.addEventListener(Event.CHANGE, changeHandler);
padBase_MC.pad.itemTextInput.setStyle("textFormat", tf3);
padBase_MC.pad.padCancel_BTN.addEventListener(MouseEvent.CLICK, padCancel);

init();

/******** ! F U N C T I O N S ! **************************/

function init():void
{
	xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
	xmlLoader.load(new URLRequest("mp3_XML.xml"));
}

/*********************************************************/

function LoadXML(e:Event):void
{
	xmlData = new XML(e.target.data);
	var songArtist:XMLList = xmlData..artist;
	var songAlbum:XMLList = xmlData..album;
	var songTitle:XMLList = xmlData..title;
	var songTime:XMLList = xmlData..time;
	var songSize:XMLList = xmlData..size;
	var songBitrate:XMLList = xmlData..bitrate;
	var songGenre:XMLList = xmlData..genre;
	var songYear:XMLList = xmlData..year;
	var songComment:XMLList = xmlData..comment;
	var len: int = xmlData.song.length();
	var i: int = 0;
	for (i; i < len; i++) {
		mp3_Artist.push(songArtist[i]);
		mp3_Album.push(songAlbum[i]);
		mp3_Title.push(songTitle[i]);
		mp3_Time.push(songTime[i]);
		mp3_Size.push(songSize[i]);
		mp3_Bitrate.push(songBitrate[i]);
		mp3_Genre.push(songGenre[i]);
		mp3_Year.push(songYear[i]);
		mp3_Comment.push(songComment[i]);
		popList(i);
		}
	tracksInDirectory = i+1;
}

/*********************************************************/

function popList(p:Number):void
{
	myDG.dataProvider = dp;
	dp.addItem({
				Track:p+1,
				Artist:mp3_Artist[p],
				Title:mp3_Title[p],
				Duration:mp3_Time[p]
				});
}

/*********************************************************/

function listOutIn(Event:MouseEvent):void
{
	TweenMax.to(playList, 1, {x:131, y:24});
	toggleButtons();
}

/*********************************************************/

function listInOut(Event:MouseEvent):void
{
	TweenMax.to(playList, 1, {x:131, y:263});
	toggleButtons();
}

/*********************************************************/

function toggleButtons():void
{
swapChildren(listOut_BTN, listIn_BTN);
}

/*********************************************************/

function toggleButtons2():void
{
swapChildren(padOut_BTN, padIn_BTN);
}

/*********************************************************/

function padOutIn(Event:MouseEvent):void
{
	TweenMax.to(padBase_MC, 1, {x:790, y:154});
	toggleButtons2();
}

/*********************************************************/

function padInOut(Event:MouseEvent):void
{
	TweenMax.to(padBase_MC, 1, {x:660, y:154});
	toggleButtons2();
}

/*********************************************************/

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

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

/*********************************************************/

function padNum(Event:MouseEvent):void
{
	var str:String = Event.target.name;
	padBase_MC.pad.itemTextInput.text = padBase_MC.pad.itemTextInput.text + (str.substring(8,7));
}

/*********************************************************/

function padCancel(Event:MouseEvent):void
{
	padBase_MC.pad.itemTextInput.text = "";
}

/*********************************************************/

Thanks in Advance
Steven