anchor.diff:      if (spreadsheet.scrollPosition > (spreadsheet.rowHeight * spreadsheet.dataProvider.length - spreadsheet.height) * .95) 
         spreadsheet.dataProvider.addAll(_createNewDataProvider(spreadsheet.dataProvider.length));
       
  -    columnList.dataProvider = new ObservableList<Row<Cell>>.from(
  -        spreadsheet.dataProvider.sublist(startIndex)
  -    );
  +    final List<Row<Cell>> columnListDataProvider = new List<Row<Cell>>.generate(columnList.lockIndex, (int i) => spreadsheet.dataProvider[i]);
  +    
  +    columnListDataProvider.addAll(spreadsheet.dataProvider.sublist(startIndex + ((columnList.lockIndex >= 0) ? columnList.lockIndex : 0)));
  +    
  +    columnList.dataProvider = new ObservableList<Row<Cell>>.from(columnListDataProvider);
     }
     
     void _handleNewRowRenderer(FrameworkEvent<DataGridItemRenderer> event) {
  
positive.code:       ..autoScrollOnDataChange = true
        ..columns = _createGridColumns()
        ..useEvenOdd = false
        ..onListScrollPositionChanged.listen(_updateRowIndices)
        ..onHeightChanged.listen(_updateRowIndices)
        ..onRendererAdded.listen(_handleNewRowRenderer);
      
      gridGroup.addComponent(columnListGroup);
      gridGroup.addComponent(spreadsheet);
  
negative.code:       ..autoManageScrollBars = false
        ..horizontalScrollPolicy = ScrollPolicy.NONE
        ..verticalScrollPolicy = ScrollPolicy.NONE
        ..lockIndex = 2
        ..itemRendererFactory = new ItemRendererFactory<RowItemRenderer<Row<Cell>>>(
            constructorMethod: RowItemRenderer.construct, 
            className: 'row-item-renderer'
  