I would debug or trace out each subexpression.

 

I don't see how item.zipcode can exist.

 

-Alex

 

________________________________

From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of xmrcivicboix
Sent: Wednesday, February 14, 2007 3:49 PM
To: [email protected]
Subject: [flexcomponents] DataGrid filtering help

 

Hi guys, I have a problem that I don't know if it's possible to do. I
have a DataGrid, a ComboBox, and a Search input field. When I select a
value in the ComboBox I want the text I enter to filter by what I
selected. Here is my code:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> " width="100%"
height="340">

<mx:Script>
<![CDATA[
import model.UserModelLocator;
import view.UserInfo;

[Bindable]
private var _userModel:UserModelLocator =
UserModelLocator.getInstance();

[Bindable]
private var filtersComboBox:Array = [{field:"Date Registered",
value:"date_registered"},
{field:"Email Address", value:"email"},
{field:"First Name", value:"first_name"},
{field:"Last Name", value:"last_name"},
{field:"City", value:"city"},
{field:"State", value:"state"},
{field:"ZIP Code", value:"zipcode"},
{field:"Gender", value:"gender"},
{field:"Disney Optin", value:"disney_optin"},
{field:"Weather Channel Optin", value:"weather_optin"}];

private function filterGrid(): void
{
_userModel.userInfo.filterFunction = filterBy;
_userModel.userInfo.refresh();
trace(filterList.selectedItem.value);
}

private function filterBy(item:Object): Boolean
{
var isMatch:Boolean = false;

/**** THIS IS WHERE I HAVE PROBLEM ****/
/**** IF I USE
"item.zipcode.toLowerCase().search(search.text.toLowerCase()) != -1"
it works good ****/ 
if
(item.(filterList.selectedItem.value).toLowerCase().search(search.text.t
oLowerCase())
!= -1)
{
isMatch = true;
}

return isMatch;
}
]]>
</mx:Script>
<mx:Grid width="100%">
<mx:GridRow width="100%">
<mx:GridItem width="100%">
<mx:DataGrid id="userGrid" allowDragSelection="true"
dataProvider="{_userModel.userInfo}" width="100%" height="300">
<mx:columns>
<mx:DataGridColumn dataField="date_registered" headerText="Date
Registered" minWidth="140"/>
<mx:DataGridColumn dataField="email" headerText="Email Address"
minWidth="200"/>
<mx:DataGridColumn dataField="first_name" headerText="First
Name" minWidth="50"/>
<mx:DataGridColumn dataField="last_name" headerText="Last Name"
minWidth="90"/>
<mx:DataGridColumn dataField="address" headerText="Address"
minWidth="130"/>
<mx:DataGridColumn dataField="address2" headerText="Apt/Suite"
minWidth="50"/>
<mx:DataGridColumn dataField="city" headerText="City"
minWidth="60"/>
<mx:DataGridColumn dataField="state" headerText="State"
minWidth="30"/>
<mx:DataGridColumn dataField="zipcode" headerText="ZIP Code"
minWidth="30"/>
<mx:DataGridColumn dataField="birth_date" headerText="Date of
Birth" minWidth="50"/>
<mx:DataGridColumn dataField="gender" headerText="Gender"
minWidth="30"/>
<mx:DataGridColumn dataField="disney_optin" headerText="Disney
Optin" minWidth="60"/>
<mx:DataGridColumn dataField="weather_optin" headerText="Weather
Channel Optin" minWidth="60"/>
</mx:columns>
</mx:DataGrid>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow width="100%">
<mx:GridItem width="100%" horizontalAlign="right">
<mx:ComboBox dataProvider="{filtersComboBox}" labelField="field"
id="filterList" fontSize="11" height="22"/>
<mx:TextInput width="200" height="20" fontSize="9"
change="filterGrid()" id="search"/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</mx:Canvas>

 

Reply via email to