         recordData = []
         for record in records
             colData = []
-            for col, colObj of @_cols()
-                if not (colObj.hide?() or colObj.hide)
+            for key, col of @_cols()
+                dataKey = col.dataKey or key
+                if not (col.hide?() or col.hide)
+                    value = @valueFromRecord(key, col, record)
                     colData.push
-                        value : colObj.display?(record[col], record) or record[col]
-                        aLink : colObj.link?(record[col], record)
-                        title : colObj.title?(record[col], record) or colObj.title
+                        value : col.display?(value, record) or value
+                        aLink : col.link?(value, record)
+                        title : col.title?(value, record) or col.title
                     
             recordData.push
                 colData: colData

                col.displayType = col.type
                col.checkbox = false
                col.checked = ''
                if col.type is 'boolean'
                    col.displayType = 'checkbox'
                    col.checkbox = true

                            col.checked = 'checked'
                    else if col.default
                        col.checked = 'checked'
                else if value?
                    col.value = col.display?(value, record) or value
                else if col.default?
                    col.value = col.default
                
