Flex DataGrid revisited

Hi there … some weeks ago I blogged about my struggles with Flex and its built-in DataGrid. After some time of getting to know “my Grid”, I decided to refactor the previous example.

To begin with here’s the new demo … (sourceview)

This movie requires Flash Player 9

It pretty much looks the same as last time but I changed some things behind the scenes – that being:

1) I excluded the ComboBox for selecting a new item from the actual DataGrid and added a HBox that handles the selection underneath.

<mx:HBox
  width="500" height="29"
  paddingLeft="5" paddingTop="2"
  borderSides="left right"
  borderThickness="1" borderColor="#b7babc" borderStyle="solid"
  horizontalGap="0"
  backgroundColor="{_arr.length % 2 == 0 ? 0xf7f7f7 : 0xFFFFFF}"
  visible="{_checkVisibility()}"
  includeInLayout="{_checkVisibility()}"
  >

  <mx:Box width="16" height="20" paddingTop="2">
    <mx:Image source="{imgAdd}"
      width="16" height="16"
            verticalCenter="0"
            verticalAlign="middle"
            horizontalAlign="center"
         />
  </mx:Box>

  <mx:Spacer width="5" />

  <mx:ComboBox
    id="addExpenseCmb"
    prompt="Add expense ..."
    height="20"
    maxHeight="20"
    dataProvider="{_vals}"
    change="onChangeAddCost(event);"
  />

</mx:HBox>

2) The text-part’s ItemRenderer (first column in grid) was replaced by the standard renderer.

<mx:DataGridColumn 
  headerText="Question"
  width="260" 
  editable="false"
  resizable="false" 
  draggable="false" 
  sortable="false" 
  wordWrap="true"
  dataField="question" 
  />

After a while of working with the previous solution I was really getting bugged with the ComboBox (and everything that came with it) being a part of the ItemRenderer and hence a part of the DataGrid itself. So I decided to exclude the addition of new values/expenses from the normal view of the data (makes sense, doesn’t it ;) ). So one can still dynamically add rows to the DataGrid, but this is done by an independent component, handling all the extra weight.

I also did some charting with the grid’s data, maybe i’ll have the time to wrap up another example including the delicious-looking PieCharts :)

Cheers

PS: I only used one of their icons, but famfamfam did a great job of putting together a really huge set of free icons.

Comments