--- In flexcoders@yahoogroups.com, "postwick" <p...@...> wrote:
thank you, sir... I appreciate your help, I shall do as you say !! Craig > > That'll update the value of the cell. > > You can't do what you're trying to do. You can't have a column with a > different dataField per row. The dataField for the column is the same for > every row. > > Is this data coming from a database, through a view? You really should do > this there. You can set up a view column with an if/then that returns the > column's value you want. > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > now we're getting somewhere! but will this update the value of the col2 or > > the value of col2 DataField? > > > > I am trying to change the value of col2 DataField to "Profit" not the value > > of col2 itself. > > > > Can I use: > > > > dgOrdExt.getChildAt(i)["Profit"].dataField = "Profit" > > > > CS > > > > > > > > > > --- In flexcoders@yahoogroups.com, "postwick" <paul@> wrote: > > > > > > You can't use selectedItem because there is no selectedItem. You haven't > > > clicked a row. Try looping through the grid. > > > > > > In the end, I really don't understand why you don't do this in the > > > dataCollection, or even in the source data. > > > > > > for (var i:Number = 0; i < mygrid.numChildren; i++) { > > > if (mygrid.getChildAt(i)["Kind"] == > > > "LONG") { > > > mygrid.getChildAt(i)["Profit"] > > > = "Profit"; > > > } > > > else { mygrid.getChildAt(i)["Profit"] = "ShProfit"; } > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > > > > > Ok... In the parent component to the datagrid I used an initialize > > > > event: > > > > > > > > public function initDg():void { > > > > > > > > if(dgOrdExt.selectedItem["Kind"]=="LONG")dgOrdExt.Profit.dataField="Profit"; > > > > if(dgOrdExt.selectedItem["Kind"]=="SHORT")dgOrdExt.Profit.dataField="ShProfit"; > > > > > > > > } > > > > > > > > it does not work. but if I replace the code with > > > > dgOrdExt.dataField="Profit"; which just sets the dataField without > > > > referencing the other column the code is all working... > > > > > > > > I also tried creationcomplete event and that did not work either. > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > > > > > > > cause I was doing it within the custom component (column) itself for > > > > > the datagrid, which can not hold an Id value, I can put it in the > > > > > parent component however.... i'll give that a whack. > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "postwick" <paul@> wrote: > > > > > > > > > > > > Not sure why you have all the Application.application stuff on > > > > > > there. Just reference the datagrid by it's id. > > > > > > > > > > > > <mx:DataGrid id="mygrid"....> > > > > > > > > > > > > mygrid.selectedItem["columname"] = "some value" > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > > > > > > > > > > > From within the custom component DataGrid Column I tried this > > > > > > > code as you suggested at the initialize event but it errors: > > > > > > > > > > > > > > > > > > > > > if(Application.application.CnvPos.dgOrdExt.selectedItem["Kind"]=="LONG") > > > > > > > Profit.dataField="Profit"; > > > > > > > > > > > > > > > > > > > > > I don't think the selecteditem field is the answer. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > > > > > > > > > > > > > yes the datagrid is bound to an array collection. > > > > > > > > I don't want to select any item, I want to change the value of > > > > > > > > a column's DataField to a one of two values based on the value > > > > > > > > of another column's output. > > > > > > > > > > > > > > > > I don't want to have to 'selecteditem' but I can try that code > > > > > > > > below are you suggesting that I use it in the labelfunction of > > > > > > > > the datagrid column that I am trying to change? > > > > > > > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "postwick" <paul@> wrote: > > > > > > > > > > > > > > > > > > Is the datagrid bound to a collection? if so, change the > > > > > > > > > value in the collection. > > > > > > > > > > > > > > > > > > or try... > > > > > > > > > > > > > > > > > > yourDataGrid.selectedItem["dataColumn1"] = > > > > > > > > > yourDataGrid.selectedItem["dataColumn2"] > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> wrote: > > > > > > > > > > > > > > > > > > > > I am trying to set the value of a column based on the value > > > > > > > > > > of another column. If I use ...selectedItem... it does not > > > > > > > > > > work, unless I am mistaken. > > > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "postwick" <paul@> wrote: > > > > > > > > > > > > > > > > > > > > > > You access the value in a column of a datagrid like > > > > > > > > > > > this... > > > > > > > > > > > > > > > > > > > > > > yourDataGrid.selectedItem["dataColumnNameOfColumn"] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > I GIVE UP!! I have tried everything!!.. I have a > > > > > > > > > > > > dataGrid that binds to > > > > > > > > > > > > an ArrayCollection. I need to change the value of one > > > > > > > > > > > > columen (Profit) > > > > > > > > > > > > based on the value of another column (Kind) ie.. the > > > > > > > > > > > > results (either > > > > > > > > > > > > 'LONG' or SHORT'). Here is where I'm at. I've tried > > > > > > > > > > > > putting code into > > > > > > > > > > > > customer DataGridColumns and labelFunctions and > > > > > > > > > > > > ItemRenderers... but can > > > > > > > > > > > > not do it. What seem to be working most are events in > > > > > > > > > > > > the DataGrid > > > > > > > > > > > > Component, better than others, but comparing values in > > > > > > > > > > > > a DataGrid is > > > > > > > > > > > > obviously impossible. > > > > > > > > > > > > > > > > > > > > > > > > Somehow I need the code to access ArrayCollection > > > > > > > > > > > > getItemat() but I > > > > > > > > > > > > can't do it! > > > > > > > > > > > > > > > > > > > > > > > > Please help! > > > > > > > > > > > > > > > > > > > > > > > > <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" > > > > > > > > > > > > initialize="initTA()"> > > > > > > > > > > > > > > > > > > > > > > > > <positions:KindColumn id="Kind" > > > > > > > > > > > > headerText="Kind" > > > > > > > > > > > > dataField="Kind" > > > > > > > > > > > > > > > > > > > > > > > > itemRenderer="com.steury.baseClasses.CellFieldTrd"/> > > > > > > > > > > > > <positions:ProfitColumn id="Profit" > > > > > > > > > > > > headerText="Profit"/> > > > > > > > > > > > > > > > > > > > > > > > > <mx:Script> > > > > > > > > > > > > <![CDATA[ > > > > > > > > > > > > import mx.collections.ArrayCollection; > > > > > > > > > > > > import com.steury.baseClasses.*; > > > > > > > > > > > > import mx.core.Application; > > > > > > > > > > > > import > > > > > > > > > > > > mx.controls.dataGridClasses.DataGridListData; > > > > > > > > > > > > import flash.events.Event; > > > > > > > > > > > > import mx.core.ClassFactory; > > > > > > > > > > > > import com.steury.controls.positions.*; > > > > > > > > > > > > import > > > > > > > > > > > > mx.controls.dataGridClasses.DataGridColumn; > > > > > > > > > > > > import mx.controls.DataGrid; > > > > > > > > > > > > > > > > > > > > > > > > private function initTA():String { > > > > > > > > > > > > if > > > > > > > > > > > > (value[Kind.dataField]=="LONG")Profit.dataField="Profit"; > > > > > > > > > > > > if > > > > > > > > > > > > (value[Kind.dataField]=="SHORT")Profit.dataField="ShProfit"; > > > > > > > > > > > > Profit.itemRenderer=new > > > > > > > > > > > > ClassFactory(com.steury.baseClasses.CellFieldInt); > > > > > > > > > > > > return myDec.format(Profit)+"%"; > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In flexcoders@yahoogroups.com, "Craig" <craigj@> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > I am trying to access the value of a DataGridColumn > > > > > > > > > > > > > and change the > > > > > > > > > > > > > DataField for another column based on this value... > > > > > > > > > > > > > Here is my code: > > > > > > > > > > > > > > > > > > > > > > > > > > <?xml version="1.0" encoding="utf-8"?> > > > > > > > > > > > > > <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" > > > > > > > > > > > > > creationComplete="getDp()" > > > > > > > > > > > > > > > > > > > > > > > > > > > ... Datagrid> > > > > > > > > > > > > > <mx:columns> > > > > > > > > > > > > > <mx:DataGridColumn dataField="Ticker" > > > > > > > > > > > > > headerText="Ticker"/> > > > > > > > > > > > > > <mx:DataGridColumn id="Kind" > > > > > > > > > > > > > dataField="Kind" > > > > > > > > > > > > > itemRenderer="com.steury.baseClasses.CellFieldTrd" /> > > > > > > > > > > > > > <mx:DataGridColumn id="Profit" > > > > > > > > > > > > > headerText="Profit"/> > > > > > > > > > > > > > > > > > > > > > > > > > > ActionScript: > > > > > > > > > > > > > > > > > > > > > > > > > > private function getDp():void { > > > > > > > > > > > > > > > > > > > > > > > > > if(Application.application.CnvPos.dgOrdExt.selectedItem.Kind=="LONG")Pro\ > > > > > > > > > > > > \ > > > > > > > > > > > > > > > > > > > > > > > > > fit.dataField="Profit";Application.application.CnvPos.dgOrdExt.refresh()\ > > > > > > > > > > > > \ > > > > > > > > > > > > > ; > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //This code works find if I use > > > > > > > > > > > > > > > > > > > > > > > > > > if(Kind.DataField="Kind")Profit.dataField="Profit"; > > > > > > > > > > > > > > > > > > > > > > > > > > //above to test the rest of the code. > > > > > > > > > > > > > > > > > > > > > > > > > > I can not figure out how to access the value of the > > > > > > > > > > > > > Datagridcolumn. I > > > > > > > > > > > > > have tied using event listeners, etc.. which did not > > > > > > > > > > > > > work. Please let > > > > > > > > > > > > > me know if anyone can help this fairly simple dilemma. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >