anchor.diff:  
     void handleClick(core.Click e) {
       // clicking on a row select checkbox
  -    if (_grid.getColumns[e.cell.cell].id == id && e.causedBy.target is dom.CheckboxInputElement) {
  +    if (_grid.getColumns[e.cell.cell].id == id && (e.causedBy.target as dom.Element).attributes.containsKey('selectColumn')) {
         // if editing, try to commit
         if (_grid.getEditorLock.isActive && !_grid.getEditorLock.commitCurrentEdit()) {
           e.preventDefault();
  
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);
      }
    }
  
  