Dojo dgrid: (Pre) Select row on render

http://stackoverflow.com/questions/14757504/dojo-dgrid-pre-select-row-on-render

by schlomm

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css">
<script src="https://cdn.rawgit.com/phusick/cdn/jsfiddle/amd-packages.js"></script>
<div id="filter-wrapper">
    <input
        id="filter"
        data-dojo-type="dijit/form/TextBox"
        data-dojo-props="
            placeHolder: 'filter by name',
            intermediateChanges:true
            "
        style="padding:2px;margin:3px;width:20em;"        
    />
</div>

<div id="grid"></div>

CSS

html, body {
    height: 100%;
}
body {
    font-family: sans-serif;
    font-size: 11px;            
}

#filter-wrapper {
    background-color: lightyellow;
    font-size: 14px;
}

#grid {
    position: absolute;
    top: 32px;
    bottom: 0;
    left: 0;
    right: 0;
    height: auto;
}

JavaScript

require([
    "dojo/ready",
    "dojo/_base/declare",
    "dojo/store/Memory",
    
    "dgrid/OnDemandGrid",
    "dgrid/Selection",
    "data/dtuned",
    
    "dijit/registry",
    "dgrid/extensions/Pagination",
		"dgrid/editor",
    "dijit/form/TextBox",
    "dojo/domReady!"
], function(
    ready,
    declare,
    Memory,
        
    OnDemandGrid,
    Selection,
    data,
        
    registry,
    Pagination,
    editor
) {
    
ready(function() {
    
    var timeoutId;
    var filter = registry.byId("filter");
    var store = new Memory({ data: data, idProperty: "Key" });
    
    var filterQuery = function(item, index, items) {
        var filterString = filter ? filter.get("value") + "" : "";
        
        // early exists
        if (filterString.length < 2) return true;
        if (!item.Name) return false;
        
        var name = (item.Name + "").toLowerCase();
        if (~name.indexOf(filterString.toLowerCase())) { return true;}
        
        return false;
    }
    
    var Grid = declare([OnDemandGrid, Selection, Pagination]);
    
    var grid = new Grid({
        store: store,
        selectionMode: "multiple",
        query: filterQuery,
        columns: {
        		Test: editor({
                label: '',
                field: 'selected',
                editor: 'checkbox'            
            }),
        		
            Name: {
                get: function(obj) {
                    // (pre)select rows if year < 2000
                    if(parseInt(obj.Year) < 2000) {
                        var grid = this.grid;
                        var row = grid.row(obj.Key);
                        grid.select(row);
                    }
                    return obj.Name;
                }
            }
        }
    }, "grid");
    
            var checkbox = document.createElement("input");
            checkbox.setAttribute("type", "checkbox");
            checkbox.setAttribute("tabindex", "0");
           ...