AnsweredAssumed Answered

Need to listen for data load before setting renderRow on dgrid

Question asked by schlot on Jun 4, 2015

I have a rather complex query that I'm running and the results need to go into a dGrid which is formatted with a renderRow.  I have successfully used this in the past.  I think it might be the size of my data set, because I'm getting an error in my renderRow function that the object I should be passing isn't yet available. 


Sometimes this works.  Otherwise, if I put a breakpoint in my renderRowFunction, this gives the process enough time to format my data and then it works.


var dataGrid = new declare([Grid, Selection]);

       datagrid = new dataGrid({
        showHeader: false,
        }, "gridDiv");
            function renderRowFunction(obj, options){
                var template = '<div class="gridTitle gridInfo">${0}</div><div class="details gridInfo">${1}</div> <div class="details gridInfo">${2}</div><div class="details gridInfo"> ${3}, ${4}</div><div class="details gridInfo">${5}</div><div class="details gridInfo provider">Provider Type: ${6}</div><div class="details gridInfo provider">Specialty: ${7}</div>';
                var divString = String.substitute(template, [obj.facility, obj.address,obj.address2,,obj.state,,obj.provider,obj.specialty])
                var div = domConstruct.create("div", {
                    innerHTML: divString
                return div;

The grid is populated from  featureLayer, which  has a definition expression on it.  Since that filter is in place, I only need to a simple where clause to get all the elements to populate the grid.  I also have an extent-change listeners to limit the contents to the current map extent.


 function updateGrid(){
       var query = new Query();
       query.where = '1=1';
       query.geometry = currentExtent;
       featureLayer.on("selection-complete", featureLayerQueryHandler, errorHandler);
      function featureLayerQueryHandler(response){
        var data = [];
          data =, function(feature){
              return {
                  'id': feature.attributes.ESRI_OID,
                  'facility': feature.attributes.NA_PROVIDER,
                  'address': feature.attributes.AD_LINE1,
                  'city': feature.attributes.AD_CITY,
                  'state': feature.attributes.AD_STATE,
            var currentMemory = new Memory({
                data: data,
                idProperty: 'id'
          datagrid.set('store', currentMemory);



Could I set something up to only define the renderRow after datagrid is populated?