Index: quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/__init__.py
===================================================================
--- quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/__init__.py	(revision 2281)
+++ quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/__init__.py	(revision 2282)
@@ -13,4 +13,5 @@
     # Example content type initialization
     import quintagroup.referencedatagridfield.examples
+    import quintagroup.referencedatagridfield.hiddencolumn
     content_types, constructors, ftis = process_types(listTypes(PKG_NAME), PKG_NAME,)
 
Index: quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/_field.py
===================================================================
--- quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/_field.py	(revision 2281)
+++ quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/_field.py	(revision 2282)
@@ -15,7 +15,9 @@
 from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget
 
+from Products.DataGridField.Column import Column
 from Products.DataGridField.DataGridField import DataGridField
 from Products.DataGridField.DataGridWidget import DataGridWidget
 
+from hiddencolumn import HiddenColumn
 
 # Logger object
@@ -28,8 +30,11 @@
     _properties.update({
         'macro': "referencedatagridwidget",
-        'column_names': ["Title", "Link", "UID"],
         'helper_css': ('datagridwidget.css',),
         'helper_js': ('referencebrowser.js', 'datagridwidget.js',),
         'force_close_on_insert': True,
+        'columns': {
+            'title': Column("Title"), 
+            'link': Column("Link"),
+            'uid': HiddenColumn("UID", visible=False)},
         })
 
Index: quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/hiddencolumn.py
===================================================================
--- quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/hiddencolumn.py	(revision 2282)
+++ quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/hiddencolumn.py	(revision 2282)
@@ -0,0 +1,26 @@
+from AccessControl import ClassSecurityInfo
+from Globals import InitializeClass
+from Products.DataGridField.Column import Column
+
+class HiddenColumn(Column):
+    """ Column with non-changeable text
+    
+    Useful with DataGridField.fixed_row property in some use cases.
+    """
+    security = ClassSecurityInfo()
+
+    def __init__(self, label, default=None, label_msgid=None, visible=True):
+        """ Create a column
+        
+            @param hide Hide column from displaying
+        """
+        Column.__init__(self, label, default, label_msgid)
+        self.visible = visible
+
+    security.declarePublic('getMacro')
+    def getMacro(self):
+        """ Return macro used to render this column in view/edit """
+        return "datagrid_hidden_cell"
+
+# Initializes class security
+InitializeClass(HiddenColumn)
Index: quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/skins/referencedatagridfield/datagrid_hidden_cell.pt
===================================================================
--- quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/skins/referencedatagridfield/datagrid_hidden_cell.pt	(revision 2282)
+++ quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/skins/referencedatagridfield/datagrid_hidden_cell.pt	(revision 2282)
@@ -0,0 +1,68 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+      i18n:domain="plone">
+      
+      
+<!-- View/edit free text columns 
+ 
+  -->
+
+<body>
+    <!-- VIEW -->
+    <metal:view_cell_macro define-macro="view_cell">                
+      <div tal:content="cell_value" />
+    </metal:view_cell_macro>
+
+    <!-- EDIT -->
+    <metal:edit_cell_macro define-macro="edit_cell">
+       <tal:visible condition="python:columnd['visible']">
+       <input style="width: 100%" name="myfield.name:records"
+                       tal:attributes="name string:${fieldName}.${column}:records;
+                                       id string:${column}_${fieldId};
+                                       value cell_value;
+                                       onchange eventHandler;
+                                       "
+                       type="text" />
+       </tal:visible>
+       <tal:hidden condition="python:not columnd['visible']">
+       <input style="width: 100%" name="myfield.name:records"
+                       tal:attributes="name string:${fieldName}.${column}:records;
+                                       id string:${column}_${fieldId};
+                                       value cell_value;
+                                       onchange eventHandler;
+                                       "
+                       type="hidden" />
+       </tal:hidden>
+    </metal:edit_cell_macro>
+    
+   <!-- EMPTY EDIT -->
+    <metal:edit_empty_cell_macro define-macro="edit_empty_cell">
+
+       <tal:visible condition="python:columnd['visible']">
+       <input style="width: 100%" name="myfield.name:records" 
+                       tal:attributes="name string:${fieldName}.${column}:records;
+                                       id string:${column}_${fieldId};        
+                                       value python: column_definition.getDefault(here);
+                                       onchange eventHandler;
+                                       "
+                       type="text" />
+       </tal:visible>
+       <tal:hidden condition="python:not columnd['visible']">
+       <input style="width: 100%" name="myfield.name:records" 
+                       tal:attributes="name string:${fieldName}.${column}:records;
+                                       id string:${column}_${fieldId};
+                                       value python: column_definition.getDefault(here);
+                                       onchange eventHandler;
+                                       "
+                       type="hidden" />
+       </tal:hidden>
+    </metal:edit_empty_cell_macro>
+    
+    
+
+</body>
+
+</html>
+
