Error with Column Settings Popup

clock June 28, 2010 06:33 by author Flexicious



I am trying to use the User Preferences part of the grid.
By default all columns show and when I unclick all and click any other column, I get the following error:

ReferenceError: Error #1069: Property name not found on com.flexicious.grids.columns.XXXXX and there is no default value.

Answer:

This happens when you are using a newer version of the library (1.4+) with an older version of the sample code.

Steps to resolve:

1) Go to http://www.flexicious.com/resources/Flex/srcview/index.html

2) Download Source(from the bottom left hand corner)

3) From the zip, pick up the SaveSettingsPopup.mxml file, and overwrite the version of this file in your project with the updated file from the zip.



The filterPageSortMode explained

clock June 28, 2010 04:52 by author Flexicious

 
Both the Flexicious basic and advanced datagrids expose a property, filterPageSortMode.


This is a key property to understand. There are two values for this property, “server” and “client”. Let us assume you are working on a Human Resource Management Application. You have a DataGrid that shows a list of Employees. You have a few hundred Employees to show. This can be easily accomplished by getting the list of employees from the server, and setting the data provider property of the ExtendedDataGrid to an ArrayCollection that contains this list of Employees. As you need, you enable filters, footers, paging, export, print, etc, and all is well and good. You will be up and running in no time with filterPageSortMode=client. The grid will take care of paging, filtering and cross page sorting for you. However, now consider a scenario where you have to display a time sheet search page. Each employee creates hundreds of timesheets each year, and multiply that by the number of employees, you are looking at thousands, even hundreds of thousands of records of data. Although it may be possible to load thousands of records in any Flex DataGrid (including ours) with no noticeable drag, this is not recommended, and often unnecessary. What we suggest in this scenario is you use the filterPageSortMode =”server”. What Flexicious does, in this setup, is it assumes that the current ArrayCollection is a part of a much larger recordset, and you are showing just the current page of data. So if there are 100,000 records in the database, and the pageSize is 50, Flexicious will show the 50 records, and provide paging UI for the user to navigate to any record in the resultset. At any point in time, no more than 50 records will be loaded on client memory. This setup, will require a little more effort in terms of configuration, but it will be considerably easier to do this with Flexicious as opposed to building it yourself, because the product is architected to cater to a scenario like this.

We provide complete examples on how to do this, including the backend code in Java and .Net.



Columns not appearing!

clock June 28, 2010 00:16 by author Flexicious

Question:

"I've discovered another issue that had me completely baffled for 2 days, but I think I've found the cause.  I was adding columns to my datagrid, but they would not display in the grid after compilation of my code. Also, if I changed a headerText value, the column would disappear after compilation when I ran my code"

 

Answer: The solution is simple:

If you see this, more than likely you have column preferences persisted. Clear your preferences, using Save Preferences -> Clear Preferences, OR clear your shared objects like defined below:

http://blog.ickydime.com/2008/12/how-to-delete-flash-shared-objects.html

 

Also, in case you add new columns, or remove columns, your users who have preferences saved may not see the updated columns. To combat this, just provide a new preferencePersistenceKey, and the grid will be treated as a new grid from a preference persistence perspective.

 

 



Wierd behavior with edit enabled datagrids

clock June 26, 2010 08:33 by author Flexicious

Question:

In our Flexicious grids, a double-click usually opens a small popup form for editing the record.  We pass an object to that popup which is altered on edit/save and it appears to correctly update the grid with the new values when the popup is closed (because the object is being passed by reference).

What we’re noticing is that when the grid is sorted, occasionally (at least 50% of the time) the selected record actually moves by one or two indexes in the grid.  It’s not a huge issue, since the record is still updating correctly in the grid, but it’s a little weird.....

Answer:

This behaviour is a byproduct of using the filterFunction along with sort on. In filterPageSortMode=client, flexicious leverages the fiterFunction property of Adobe's ICollectionView. When you turn this on, the grid refreshes on each update to any object within the dataprovider. The post below summarizes this issue very well:

http://tomek.me/disable-sort-on-datagrid-edit-update/

Attached, is a file that demonstrates this same issue with the Adobe DataGrid, and a way to bypass it.
In short - you could either disable Auto Update, or use the modified ArrayCollection. If you disable autoupdate, you may have to manually call processFilter on the grid, which will refresh the grid UI for you.

 

 

FlexiciousSandbox.mxml (4.43 kb)



Change the Display labels of the Date Combo Box, Date Format/Range on the picker

clock June 12, 2010 19:21 by author Flexicious


Question1: I’m very impressed and pleased with the product. I’m using the DateComboBox and wondering if there’s a way to disabled certain date on the CustomDatePicker if the user chooses to pick a custom date range. As of now, the user can pick any start date and end date. I’d like to have the option of limit it to only the current year. Is it possible?

Question2: How do I change the display labels of the Date Combo Box?

Question3: How do I change the "All" text that shows up in the Filter ComboBoxes.

Question4: My backend sends down dates as strings. How can I get the date combobox to filter correctly?

Answer: You will need to extend the DateComboBox for both of the above.

For #1 and #2, you would associate your column with your custom date combobox like below:

<columns:ExtendedDataGridColumn filterRenderer="MyDateComboBox" />

For #1, in your custom date combbox you would do the following (This code is included in the sample):

    public class MyDateComboBox extends DateComboBox
    {
        public override function get  popup():Object
        {
            if(!_popup)_popup=new MyDatePicker();
                return _popup;
        }

For #2, in your custom date combbox you would do the following:
 


public class MyDateComboBox extends DateComboBox
{

    public override function set dateRangeOptions(val:Array):void

    {

   
    var coll:ArrayCollection=new ArrayCollection();

    for each(var dateRange:String in val)
       coll.addItem({"label":YOUR_LABEL,"data":dateRange});

    dataProvider = coll;

    coll.refresh();

    }

}

 

For #3: <mx:Application preinitialize="application1_preinitializeHandler(event)">
protected function application1_preinitializeHandler(event:FlexEvent):void
{
    Filter.ALL_ITEM="todos";
}


For #4: There are a couple of options, first is to use a ICustomMatchFilterControl. This will basically give you control over the filter matching operation. There is another blog post that describes how to do this. The other option, and this one was specifically designed for this case is to implement a IConverterControl. The file below demonstrates how to do this:

 

custom filter.txt (2.39 kb)

 

MyDatePicker.mxml (2.26 kb)

MyDateComboBox.as (2.34 kb)