Actionscript 3 :: Flex - Tab View Multiple DataGrids And Same DataProvider
May 26, 2010
I have a flex application in which I have a TabNavigator with multiple tabs and a datagrid in each of those tabs. I have bound s single array of data to each grid.
What I want to do is to bind each grid with a particular set of data in that array i.e. to distribute array contents among grids based on data type. For example items starting with letter A could be displayed in first grid, B in second, starting with C in third and so on. Hence you can say alphabetically distribute the data on different grids. The problem is that the data will be added randomly by the user.
To make one data array for each grid is not an option (due to design restrictions).
I want to use one data source (e.g. an Array) for multiple Datagrids that have different filterFunctions attached and show different columns.First, I thought I use a very straight forward apporach:create the Arraycreate an ArrayCollection for every DataGrid and set the "source" property to the Arraycreate the DataGrids and set their dataProvider property to its designated ArrayCollectionSo now. every ArrayCollection can have its own filterFunction, sort state etc. but there needs tos are dispatched and I have to call itemUpdated manually on each of the ArrayCollections. While debugging into the code in order to get a deeper understanding for Flex, I tried to figure out, what this misterious "itemUpdated" method does, especially as it notes in the adobe documentation, that, if no "property" is given (e.g. it is null), a simple "refresh()" will occur.
I did not find any calls to "refresh()" in the whole debugging (and I went down the framework whole as deep as possible (btw: lots of funny comments right in the code :-) )he only thing I could find was a CollectionChangeEvent getting dispatched with a PropertyChangeEvent in its "item" property. Which was of the kind "UPDATE" (and not, as I would expect "ADD"). When trying to dispatch that event manually, it never worked (e.g. the datagrid did not update).
I have multiple datagrids with about 10-15 columns total. I have a numeric sortCompareFunction for each column. At the moment, I have a separate function for each sort compare I do....each does the sorting numerically. I'm guessing I could condense functions sort1, sort2, sort3, etc into 1 function but I can't figure out how:
private function sort1(obj1:Object, obj2:Object):int{ var value1:Number=(obj1.zip==''||obj1.zip==null)?null:new Number(obj1.zip); var value2:Number=(obj2.zip==''||obj2.zip==null)?null:new Number(obj2.zip);[code]...............
I am working on a Flex AdvancedDataGrid with a flat ArrayCollection dataProvider. The requirement is that when the root nodes is closed, the root row should show a subtotal data and when the root nodes is opened, not show the subtotal data.
I have a main datagrid, and want to launch a window with another datagrid in it, bringing in a different dataprovider. However, when I do this it acts funnny, brings in some default datagrid information and then gives me an error when I try to set the dataprovider:"multiple initializers for property dataprovider. (note: 'dataprovider' is the default property of mx.controls.datagrid)"
what I need to do is combine 5 arrays with 5 individual strings (which have come from a JSON webservice) into one single list item in FlashBuilder Burrito. [code]I've pulled these out successfully and each one traces in the debugger, although as I need them all in the same list I'm struggling to establish them as a dataprovider together.If I push the strings and arrays together it is impossible to read properly, as the main Titles are at a different level to any descriptors for the products which are in the arrays.
I'm developing a Flex/AIR application that's growing big, and some of the components need to be seen from different points of view (i.e Admin, Staff, User, Guest). I've seen myself placing code in those components to handle what the user can and can't see. But it's becoming unmanageable as the code and the roles grow bigger. I was wondering what's the best way to implement multiple views inside the components while keeping them as reusable as possible.
I've got a Grid whose GridItems contain another DataGrids. (The DataGrid are nested in the Grid). Now I changed the Grid's horizontalGap-StyleProperty to zero. But because there are several DataGrids in one GridItem, there is still about 5-10px spacing in between those DataGrids. How to get rid of these spacings ?
I have a DataGrid which contains a DataGridColumn with a textinput and DataGridColumn with a Button.The DataGrid is bound to some XML which displays values in the text box.When the button for a row is clicked I need to get the value out of the text box and save it into the relevant XML node.My solution was just to pass the id of the row to the button click event then loop over the rows until I find the id then just grab the text box value. Simple. However the only advice I can find on looping over the rows is via the underlying dataProvider, which is nonsense as the two aren't the same thing.
we want to drag a button with a css layout from one grid to the other. On the second grid should be the same button with this layout. The grids are in different mxml files.
I have 2 advanced data grids, one above the other. They both have the exact number of columns, and pertain to each other in the same way. But each is showing different data, which is why I split into 2 grids. However, on each one you can resize the columns, what I would like is to make it so that if you resize a column on either datagrid the same column on the opposite datagrid resizes as well, so they are both always lined up.
I'm currently using RobotLegs with the Presentation Model pattern to develop a Flex 4 project. I understand that all business logic related to a View resides in the Presentation Model associated with that view, however, I am confused when it comes to View specific logic.For example, I have an indicator that needs to be positioned relatively to list items depending on which list item is selected. Is it acceptable in the Presentation pattern to put the logic that will position the indicator in the View and simply have that logic run in reaction to a selectedIndex property changing in the presentation model?The reason I am considering this is that since the Presentation Model does not have a reference to the view it is difficult to come up with an ideal solution for manipulating view components.
I've got a client who has a list of items on a Datagrid. When the row is clicked, it sends the user to another page with details of that item. The client wants the rows to act like HTML links, where the color is purple when the link has been previously visited and its normal color if the row hasn't been clicked in the past. I've accomplished this with item renderers and SharedObjects. The application loads the visited ids into an array on start and the item renderer colors the individual cells if that row had been visited.
The issue here is that the client also wants the text color in the rows to turn white when the user rolls over the row. Because the item renderer sets the color, it doesn't respond to the default stylesheet for the datagrid. I can make it turn white on rollover of an individual cell, but we need the whole row to do it. Is there a way to trigger a function in all the item renderers in the row, or is there a better way to accomplish this?
Is it just me, or do flex MX datagrids sort in a case sensitive manner be default? That is, they'll sort like this:
I know I can give a datagrid column a custom sort function, but do I really have to do that for every column in the app?
So this is a bug in a legacy app- updating every single grid to spark really isn't an option (if that's even a fix). Am I missing some obvious way to change the sorting pattern for an entire grid?
Im using Oracle, BlazeDS, Java and Flex. I have a list of objects displayed in a datagrid(Lets call them Main-objects. Each of these objects have a set of UserComment-objects associated with them(One-to-Many relation in the DB). These comments may come from two different "types" of users, distuingished with either a 1 or 0 in the UserComment-object's "userType" field. Each time the user selects a Main-object in the datagrid, the UserComment's related to this object is displayed in a separate datagrid below.Based on the introduction, i want to separate the UserComment's into two separate datagrids (one for each user-type), instead of the one i have now. So my question is: What is the best approach for performing this task? What is the best way of separating the UserComment's into two separate data grids based on the value of the "userType" field?
we have developed a web application by using flex-blazeDS-Java. Now we got a requirement that to print the user existed page whenever he clicks on Print button. I am able to print my flex componets and advanced datagrid but not able to print the custom item renderer images which are rendered in datagrid. And also how to print the multiple pages when I have large data in advanced datagrid.
I have one .mxml file (the Application) with a ViewStack (with 4 views) and a ControlBard, obviously I can change the views with it, but what I want to do is: in view #1 I have an image which I want to convert to a "hyperlink", so when I click it I go to View #2, is this doable? Also I would like to pass somehow some data (like a String) to that View #2 (lets say the it's a user avatar I click so I want to go to the second view which will show me his profile, that's why I need his name/id).
My problem is that when I try to pass an object from the navigator.pushView(view, dataobject), I can't figure out how to access the dataobject from actionscript. I can access {dataobject.property} from MXML easily, but I want to set a variable in the new view to the passed dataobjects property.
is there a way to view all of the hit spots with in the project at the same time? I have multiple hit spots attached to various buttons and it would be ideal to view them all at the same time to ensure I am not overlapping.
I am using an component, and currently have a dataProvider working that is anArrayCollection (have a separate question about how to make this an XML file... but I digress).Variable declaration looks like this:
[Bindable] private var _dpImageList : ArrayCollection = new ArrayCollection([ {"location" : "path/to/image1.jpg"},
i want to have the same movieclip showing up multiple times at different locations on the screen. i don't want to create multiple instances just cuz it seems less "efficient", so it'd be neat if there's a way to do this.essentially what i'm trying to do is have a the user see the same movieclip but with different things on top of the movieclips, and if the user does something to do the movieclip in one location (ie: click to change a tile in the movieclip), i want that to take effect in all locations.i could just add event listeners to each tile in all the movieclip to have the same effect independent of which movieclip you click the tile in, but i'm hoping i can avoid this.
The flex DataGrid colums are arranged alphabetically by default. I need to order the DataGrid colums as per the order in its dataProvider. The dataprovider is the result of the HTTPService . And the number of columns is not known to us . The number of columns depends on the HTTPService result.
I have a datagrid with dataProvider property set in MXML as: dataProvider="{pagedResult.lastResult}" How do I set the dataprovider in actionscript? I have: protected function getResult (event:FlexEvent):void { pagedResult.token = mydata.paged(); adg1.dataProvider = pagedResult.lastResult; }
I have an application that takes the user through a set of steps, configuring a product, say about 10+ screens. With options to go back, skip to a certain point etc. I need to fade between these steps, and also have language switches available at any point.
I was thinking of using an MVC style pattern, having a master view that accepts a 'next view' and fades it in, removing the old.
It feels bloated to have 10+ separate view classes, using similar components for this task, so was wondering what other approaches there are that I should look into? or one that is suited for this kind of application
When setting an arrayCollection as a dataProvider to a comboBox programmatically,if the arrayCollection has just one element,i need to do a small validation[code]..
I am creating the standard "Click to add row" control but I really don't want to dirty the dataProvider with a "placeholder" since it is bound to the model and could end up in the database. Is there a way to add a row that isn't represented in the dataProvider? I started down the road of adding an item directly to listItems but then that needed an item in rowInfo and then that need a reference in rowMap.