Home > FLEX > Filtering In DataGrid(using starting letter)

Filtering In DataGrid(using starting letter)


Gridfilter.as

package com
{
import flash.events.Event;
import flash.events.MouseEvent;

import mx.collections.ArrayCollection;
import mx.containers.HBox;
import mx.controls.Alert;
import mx.controls.Button;

public class GridFilter extends HBox
{
public var uniqArray:ArrayCollection;
[Bindable]
public var resultArray:ArrayCollection;
public var filterString:String;

public function GridFilter()
{
uniqArray=new ArrayCollection();
resultArray=new ArrayCollection();
filterString=new String();
}
public function createUniqArray():void
{
uniqArray.removeAll();
for(var i:int=0;i<resultArray.length;i++)
{
uniqArray.addItem(resultArray.getItemAt(i).first_name.charAt(0).toUpperCase());
}
for(i=0;i<uniqArray.length-1;i++)
{
for(var j:int=i+1;j<uniqArray.length;j++)
{
if(uniqArray[i]==uniqArray[j])
{
uniqArray.removeItemAt(j);
j–;
}
}
}
createSortBtns();
}
public function sortItems(e:Event):void
{
filterString=e.currentTarget.label;
resultArray.filterFunction=sortFilter;
resultArray.refresh();
}
public function sortFilter(e:Object):Boolean
{
return e.first_name.charAt(0).toUpperCase()==filterString;
}
public function createSortBtns():void
{
var allBtn:Button=new Button();
allBtn.label=”All”;
allBtn.width=40;
allBtn.addEventListener(MouseEvent.CLICK,allClick);
this.removeAllChildren();
this.addChild(allBtn);
for(var i:int=0;i<uniqArray.length;i++)
{
var btn:Button=new Button();
btn.width=40;
this.addChild(btn);
btn.label=uniqArray[i].toUpperCase();
btn.addEventListener(MouseEvent.CLICK,sortItems);
}
}
private function allClick(e:Event):void
{
resultArray.filterFunction=null;
resultArray.refresh();
}

}
}

Application

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical” xmlns:ns1=”com.*” creationComplete=”init()”>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

[Bindable]
private var resultArr:ArrayCollection=new ArrayCollection();

private function init():void
{
resultArr.addItem({first_name:”Admin”,last_name:”Admin”,email:”admin@mail.com”});
resultArr.addItem({first_name:”Boom”,last_name:”Boom”,email:”boom@mail.com”});
resultArr.addItem({first_name:”com”,last_name:”com”,email:”coom@mail.com”});
filter.resultArray=resultArr;
filter.createUniqArray();
}
]]>
</mx:Script>
<ns1:GridFilter id=”filter” height=”10%” width=”100%”>
</ns1:GridFilter>
<mx:AdvancedDataGrid id=”adg1″ designViewDataType=”flat” dataProvider=”{resultArr}” width=”100%”>
<mx:columns>
<mx:AdvancedDataGridColumn headerText=”Firstname” dataField=”first_name”/>
<mx:AdvancedDataGridColumn headerText=”LastName” dataField=”last_name”/>
<mx:AdvancedDataGridColumn headerText=”Email” dataField=”email”/>
</mx:columns>
</mx:AdvancedDataGrid>

</mx:Application>

In this i have a result array in grid filter component  in which  i am creating

a unique array of starting  letters from the result’s first name and then adding the buttons with that letters on clicking on that button iam using a filter function for filtering

View :http://www.box.net/shared/2jppqahf5h

Categories: FLEX
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.