Hi,
I try to modify second example from
http://livedocs.adobe.com/flex/3/html/help.html?
content=cellrenderer_4.html.
If I change function handleDataChanged(event) like this:
public function handleDataChanged(event:Event):void {
// Cast listData to DataGridListData.
var myListData:DataGridListData=
DataGridListData
(listData);
/////////////////////////////////////////////
// I want to disable this cell
if (myListData.rowIndex == 0 &&
myListData.columnIndex == 1) {
this.enabled = false;
}
//////////////////////////////////////////////
// Access information about the data passed
// to the cell renderer.
text="row index: " + String(myListData.rowIndex)
+ " column index: " + String(myListData.columnIndex);
}
It works well at first, however when I click sort on the head of
every column, weird thing happened. Both those two cells were
disabled, I tried several times and add more than two cells, there
are always more than one cells were disabled. In debug mode, I can
make sure that this change is not triggered by code "this.enabled =
false;", because it's only executed once.
I don't know why and can you help me to find out the reason?
Thanks very much.
Jackoo
Following is the completed source code:
<?xml version="1.0"?>
<!-- itemRenderers\dataGrid\myComponents\RendererDGListData.mxml -->
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml"
preinitialize="initTA();">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridListData;
import flash.events.Event;
public function initTA():void {
addEventListener("dataChange", handleDataChanged);
}
public function handleDataChanged(event:Event):void {
// Cast listData to
DataGridListData.
var myListData:DataGridListData=
DataGridListData(listData);
/////////////////////////////////////////////
// I want to disable this cell
if (myListData.rowIndex == 0 &&
myListData.columnIndex == 1) {
this.enabled = false;
}
//////////////////////////////////////////////
// Access information about the
data passed
// to the cell renderer.
text="row index: " + String
(myListData.rowIndex) + " column index: " + String
(myListData.columnIndex);
}
]]>
</mx:Script>
</mx:TextArea>
<?xml version="1.0"?>
<!-- itemRenderers\dataGrid\MainDGListDataRenderer.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var initDG:ArrayCollection = new ArrayCollection([
{ Company: 'Acme', Contact: 'Bob Jones',
Phone: '413-555-1212', Date: '5/5/05'},
{ Company: 'Allied', Contact: 'Jane Smith',
Phone: '617-555-3434', Date: '5/6/05'}
]);
]]>
</mx:Script>
<mx:Panel paddingTop="10" paddingBottom="10"
paddingLeft="10" paddingRight="10" >
<mx:DataGrid id="myGrid" dataProvider="{initDG}"
variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn dataField="Company"
itemRenderer="myComponents.RendererDGListData"/>
<mx:DataGridColumn dataField="Contact"
itemRenderer="myComponents.RendererDGListData"/>
<mx:DataGridColumn dataField="Phone"
itemRenderer="myComponents.RendererDGListData"/>
<mx:DataGridColumn dataField="Date"
itemRenderer="myComponents.RendererDGListData"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>