anchor.diff:      } else {
         _grid.setSelectedRows(_grid.getSelectedRows()..add(row));
       }
  +  }
  +
  +  /// Check whether the [row] is currently selected.
  +  bool isRowSelected(int row) {
  +    return _selectedRowsLookup.containsKey(row);
     }
   
     void handleHeaderClick(core.HeaderClick e) {
  
positive.code: 
  
  class CheckboxSelectionFormatter extends Formatter {
    Map<int, bool> selectedRowsLookup;
    CheckboxSelectionFormatter(this.selectedRowsLookup);
    @override
    void call(dom.HtmlElement target, int row, int cell, dynamic value, Column columnDef, DataItem dataContext) {
      target.children.clear();
  
      if (dataContext != null) {
        target.append(new dom.CheckboxInputElement()..checked = selectedRowsLookup.containsKey(row));
      }
    }
  }
  
negative.code:   List<async.StreamSubscription> _subscriptions = [];
    Map<int,bool>_selectedRowsLookup = {};
    CheckboxSelectColumn({String id: '_checkbox_selector', String cssClass,
                         toolTip: 'Select/Deselect All', int width: 30})
    : super(id: id, cssClass: cssClass, toolTip: toolTip, width: width,
        name: 'Column selector', nameElement: new dom.CheckboxInputElement() , field: 'sel', resizable: false,
        sortable: false) {
      if(formatter != null) {
        this.formatter = formatter;
      } else {
        this.formatter = new CheckboxSelectionFormatter(this);
      }
    }
  
  