Hi,

Does anyone have any idea how to edit data that does not come from
fixed object properties i.e. myObject.Name but myObject.Attributes[2]
which might be name?

I have a 2D array, array of rows and array of cells for each row, both
are arbitrary. I have this successfully displayed my data in
AdvancedDataGrid via labelFunction.

public function getContentLabel(item:GridRow,
column:CustomLabelColumn) : String
{
        if(item != null)
        {
                return item.Cells.getGridLabelCellAt(column.columnIndex).Label;
        }
        else
        {
                return null;
        }
}

How do I edit the data in these columns?
I looked at
http://www.adobe.com/livedocs/flex/3/html/help.html?content=celleditor_8.html#197235
and tried messing around with itemEditBegin and itemEditEnd. I have
itemEditBegin working successfully where I am able to display my label
in a text box. The itemEditEnd for ADG seems to crash because I'm
using typed objects instead of plan strings or XML.

In fact I'm convinced there is a bug in the itemEnd base handler. I
tried calling preventDefault from the grids itemEnd function but no
luck, I am forced to overwrite the event.reason so that the base class
doesnt destroy my itemEditor.

My issue is here:

In AdvancedDataGridBaseEx.as 

private function
itemEditorItemEditEndHandler(event:AdvancedDataGridEvent):void
...........

var newData:Object =
itemEditorInstance[_columns[event.columnIndex].editorDataField];
var property:String = _columns[event.columnIndex].dataField;
var data:Object = event.itemRenderer.data;
var typeInfo:String = "";

//WHY is this only XML??? my "data" variable has plan String text and
yet I never make it into the typeInfo == String part since typeInfo is
"" because the XML loop never executes on an object;

for each(var variable:XML in describeType(data).variable)
    {
        if (property == variab...@name.tostring())
        {
            typeInfo = variab...@type.tostring();
            break;
        }
    }
 if (typeInfo == "String")
                {
//NEVER make it here
                    if (!(newData is String))
                        newData = newData.toString();
                }
//..........
//CRASH HERE since property is null.
// data = "Some Text";
if (data[property] != newData)
                {
                    bChanged = true;
                    data[property] = newData;
                }

Reply via email to