Flex :: ArrayCollection Wrapper Allowing Binding Mechanism To See Changes?
Jul 26, 2011
I have an ArrayCollection containing bindable objects. I would like to access them in multiple places like below (there's only one label for clarity). How can I achieve that?hould I write some kind of wrapper for ArrayCollection dispatching special event (which?) catchable by Flex event mechanism.
I have a datagrid that gets its data from a webservice.When data from the webservice is retrived it calls the following function:
private function onListReg():void { arrRegOld = WSAutoreg.list.lastResult as ArrayCollection; arrReg = WSAutoreg.list.lastResult as ArrayCollection;
[code].....
The intent is when I hit a update button, it compares arrRegOld with arrReg and see if any values have changes. The problem is whenever I change values on the Datagrid it changes on both the dataProvider and on both ArrayCollections.What should I do so that the binding applies only to one ArrayCollection?
I am using flex SDK 3.5. I have model.as and in it i have an ArrayCollection (name it arr_mod) which is Bindable.
From my mxml i link to this arr_mod in three places: 1) in DataGrid i set dataprovider={arr_mode} ...
2) in Button i add new item to the arr_mod this way: mx:Button .. click = "{arr_mod.addItem(new Item)}"
3) in textBox i want to add mx:TextBox text="{mySpecialCounterFunc(arr_mod)}" note that in the Script of mxml arr_mod is Bindable as well as in the class definition in model.as
The problem is, that when clicking on button, mySpecialCounterFunc is not called! it should be called, since i use {} and this should listen to changes in arr_mod (a change that was made in the button should cause a new item to be added.. and than the listener to respond). While The DataGrid is updated correctly! By the way, if i change arr_mod to simple String or Int it works.. i.e. mySpecialCounterFunc is called Why??
I am trying to bind an ArrayCollection result coming in from the server to my DataGrid created dynamically in AS. The result data is not getting Displayed in the Grid. var dg:DataGrid = new DataGrid(); dg.width=650; dg.dataProvider=someArrayCollfromServer;
I am adding the dgColumn as runtime based on some data from a XML and it is the same as defined in below static format. But if I use the same code and create the DataGrid as a Flex Component as below, it works fine. <mx:DataGrid id="dg" width="100%" height="100%" dataProvider="{someArrayCollfromServer}"> <mx:columns> <mx:DataGridColumn dataField="Value" headerText="Value"/> <mx:DataGridColumn dataField="Code" headerText="Code" /> </mx:columns> </mx:DataGrid>
This works fine. Is there some functionality or implementation different as far as DataGrid is concerned in Flex and AS.
I have a somewhat complex parent/child hierarchy object that I need to display in a tree format that dynamically updates. To pass it into the tree as a dataprovider I convert the top level parent into an Array and then into an ArrayCollection. The problem there is if anything changes in the hierarchy the tree isn't dynamically updated unless I regenerate the dataprovider.
EDIT: I didn't have much code shown so I just tried to include the skeleton version of how everything is being used below, the tree works fine and even when I remove/add nodes the changes are evident but the vertical scroll bar isn't updated(doesn't resize) and if I scroll the tree will get out of whack and may display whitespace at the bottom of the tree where the item was just removed.
I tried just a plain bindable ArrayCollection test object with multiple levels and it updates properly so I think my tree is fine it's just how I'm trying to bind the dataprovider that I'm having the issues.
AS3 Class 1 - Object that can have plenty of child objects of itself by calling insertCustomObject()
public function CustomObject() { } public function insertCustomObject(customObject : CustomObject) : void {
I'm new to Flex and am using TileList bound to an ArrayCollection. The array collection is empty at load time, and then updates with the results from am HTTPService call. The problem is that the item renderers aren't being rendered as expected, I'm guessing because there was no data when they were first rendered at load time. Here's simplified example:
I'm trying to make a Flex (Advanced)DataGrid component with some mechanism where the user can toggle the visibility of the columns. I've crudely implemented this by reading in the columns into the right-click menu, and when a column name is selected here, the visibility is toggled. It works, but it's not the most elegant solution.Specifically, I'm trying to emulate the "datagrid" that Mozilla Thunderbird uses to display emails. Here is an image:
In the upper right, there is an icon over the scroll bar. If there is no scrollbar, the icon remains in the same place. When clicking the icon, it opens up a menu that shows all the possible columns, with the visible ones having a check mark next to them, like this:
Also, the scroll bar always appears under this button, never "pushing" it over into it's own column.I'd like to re-create this in Flex. I believe the menu part and creating a column with a button headerRenderer is easy enough. But I can't figure out how (if at all possible) to do this with the scrollbar, because the scrollbar always seems to be "its own column".
Select a school listed in the first datagrid, and display all the student records /details of that school in the next datagrid. But, since datagrid is editable and requirement mentions : "Use a Wrapper class around the object to get the data, set the same and save. Ensure wrapper is bindable to take into consideration the updates being made to datagrid text fields."
I have an object which is a type of a Data Access Objects i.e. DO.
mySchool:mySchoolDO.
The mySchoolDO is an actionScript class of following code :
public class mySchoolDO { public var schoolName:String; public var schoolLocation:String;
[code]....
The showSchoolStudents will display all the details of students on to the datagrid. But, my datagrid is editable. And, I want to use WRAPPER CLASS around this object such that
a> I can retrieve individual values as present in studentsDO i.e. studentID, studentCourses, studentGender, studentPhone.
b> I shouldbe able to set the values as they are updated in the visual datagrid.
c> Finally save all the data and submit on submit click.
When I make changes to a Flex project and rerun the project, it seems that FlashBuilder4 rewrites my html wrapper that embeds the SWF. But I have additional javascript code in the html wrapper and don't want to keep losing my code. I had to re-write the code once and it was a pain in the neck.How do I stop it from re-writing the html. And the related question: how do I stop it from deleting the html during a clean?I basically need to exclude the html from its processing once it's been created the first time. P.S. I'm using Flash Builder 4, but I suppose it's the same in Flex Builder 3.
I'm still learning how to compile with the Flex SDK. And I'm learning how to use SWC files and [EMBED] statements to pull my assets into my application.With the Flash IDE, I can link a library asset to a class and it's automatically embedded into my custom class. So that's 1 asset in 1 class. With the Flex SDK and SWC files, it seems I can only* pull in assets at the variable level, so I end up with my custom classes containing yet another class -- this means I have an extra wrapper/decorator (whatever you want to call it) class that I didn't have when using the Flash IDE.Is this what people typically do? Doesn't that seem superfluous?I've read Colin Moock's 'Essential Actionscript 3.0', where he mentions something about embedding a SWF at class-level as binary data.
In Flex builder 3 when I create a new flex application targeting the flex 4 sdk, it wont generate a html wrapper file. I have hunted around the web for answers, but no success. I have made sure the box is checked in the project properties to generate html wrapper.
The only workaround is to target an older version of the sdk (i.e. 3.2), which will cause the wrapper to be generated. Then I can revert the project to sdk 4. This then means I can never do a clean of my project because this will result in the wrapper being deleted. Has anyone else come across this? Is this just a bug with Flexbuilder3?
I'm building an Flex 4 application using IntelliJ IDEA 9.0.2 generated sample Flex application. I replace the generated mxml with the following code from the book Hello Flex 4. It simply crashes the browser when I run it. It says "Waiting for [URL]..and then crashes I tried it on both FF 3.5.9 and Chrome 4.
there's a need to select a mechanism, allowing user to hide/show columns in a DataGrid.One of suggested ways is adding a button (which looks like a column header, but with no column). When user clicks on it, the list of columns comes and user may select columns to hide/show. But is there any way to have such column in a grid (just a header with no column .. as example - you may see the grid in Mozilla Thunderbird)?
The other, less likely way, was the popup list, appearing when mouse hover the DataGrid. But this list would be used rarely. So, this flashing list would be just a headache for an end-user.
The ways with mouse-clicking .. I'm just afraid, that they would be left unnoticed and user would have a hard days while using a grids with a dozens columns.
Edit #1Maybe it would be better if I just provide a pic of this magical "header with no column", to escape confusion ..
Here's it .. there's a clickable column-header in a grid, but there's no column under it ..
Edit #2There's some area right above scrollbar in the dataGrid, it might be the right place for putting this functionality .. but it seems like I can't use it.
Adobe help document said, "When a component calls an invalidation method, it signals to Flex that the component must be updated. When multiple components call invalidation methods, Flex coordinates updates so that they all occur together during the next screen update."
I'm developing an application in AIR via Flex, but I'm not seeing where I'm going wrong with SQLite (I'm used to MySQL). Parameters work, but only in certain instances. Is this part of the built-in sanitation system against sql injection?
Works: sqlite "INSERT :Fields FROM Category", where the parameter is :Fields = "*" AS3 var statement:SQLStatement = new SQLStatement(); statement.connection = connection; statement.text = "INSERT :Fields FROM Category"; statement.parameters[":Fields"] = "*"; statement.execute; [Code] .....
I did suppress warnings in flex compiler using "-show-binding-warnings=false". But what I am interested to achieve is to suppress run time warnings (especially binding warnings - since I am getting data in model mostly in XML structures and it is fine for me if its unable to bind to its nested child nodes) in console (I am working on flex on Eclipse with the flex plug in). Is there a way to achieve it?
I'm working on a prototype that would require me being able to read and track the mouse movement over a playing youtube video. The basic code to replicate my problem boils down to this simple test case:
Youtube player loads The label on the top right tracks the X coordinate of the mouse The number should update even when moving the mouse over the Youtube player
So far the program behaves as expected when running from the IDE (tested on both FlashDevelop and FlashBuilder) and even when running the file manually from the output folder. But, alas, when I try to run it from anywhere else than the debug folder (be it another location on my computer or up on a webserver), the Youtube player seems to eat the events.
I don't get sandbox security warnings when debugging (thanks to allowDomain("*")) but I'm running out of ideas on why the program fails once you take the file out of the debug folder.
I have this variable in Model class:[code]I've used BindingUtils to get notified when the XML changes:[code]Function onChange gets triggered when I assign an XML to the variable, but not when I change some attribute of the XML: Model.getInstance().someXml.@attr = "newValue";
I have a advanced datagrid and populating some data by using arraycollection. And i am filtering the arraycollection, the arraycollection index got changed.
first one shows playheadtime of videodisplay and another is also used for same purpose. the difference is that when we are in add mode(decided from a flag variable) both should show current playheadtime using binding. but when we are in edit mode(again decided from flag) the latter label should remain static, to be more specific, the value retrived from database.how can I do that using actionscript. I tried ChangeWathcer but I found it a bit tricky. Is there any other simpler way or am I missing something. following is my code.
private function init():void { if (queFlag == 'a')
I want to load key/values configuration pairs stored in XML file. To bind a collection of data i know i need to use the ArrayList class, but the problem is that i want to be able to bind the loaded values using their corresponding keys and not by their indexes in the ArrayList object. For example i want to be able to do this :
[Code]...
So the question is how to bind the key/value pairs loaded form XML. I don't want to go manually set variables, i want to bind them so when they are loaded the are set automatically. Did anyone had to do something like that ?
I'm having some troubles with binding data. I have an application that contains a viewstack of components. Let's say I have comp1, comp2 and comp3 inside the viewstack. Each component, has its own data class --> comp1Data.as, comp2Data.as and comp3Data.as. All values in each component are binded to the corresponding data in it's data object.
A click in a control in comp1 leads to comp3, the same goes for comp2. Clicking a control in comp2 leads to comp3. When going from comp1 to comp3, comp3Data.as is initialized and and comp3 displays the binded values. When going from comp2 to comp3, comp3Data.as is also initialized but the binded values are not displayed...
I'd like to add a derived property to flex:[code]However, derived won't update when I change a or b.Is there a better (faster) way to make derived update than giving a and b setter methods which invalidate it?added keyword "get".This makes more sense now, I hope.
Is it possible to bind a property (don't know which) of the mx:Image control, so that it is (should be) possible to get in form of a bytearray? (using Flex 4) i have to forward the bytearray to a WCF service to be stored and afterwards retrieved!