grid undefined in loadXML with callback function

How do I reference the grid in the callback function? The way that I’m doing it seems to be undefined. I’ve tried both “this” and “myGrid” See below:



function doInitLayout(){

    var dhxLayout = new dhtmlXLayoutObject(“layoutDiv”, “2E”);

    dhxLayout.cells(“b”).hideHeader();

    dhxLayout.cells(“a”).setHeight(100);

    dhxLayout.cells(“a”).fixSize(true,true);

    dhxLayout.cells(“a”).setText(“Basic Search”);

    dhxLayout.cells(“a”).attachObject(“BasicSearchDiv”);

    dhxLayout.setEffect(“collapse”, true);

    var myGrid = dhxLayout.cells(“b”).attachGrid();

    myGrid.setImagePath("${PathToDhtmlx}imgs/");

    myGrid.setSkin(“light”);

    myGrid.enableSmartRendering(true);

    myGrid.preventIECaching(true);

    myGrid.enableEditEvents(true,false,true);

    gridQString = “/indexXml”; //save query string to global variable (see step 5 for details)

    myGrid.loadXML(gridQString,onInitAddlSettings);

}

function onInitAddlSettings(){

    myGrid.hdr.rows[2].onclick=function(e){ // myGrid or “this” undefined <-----------------------------------------------------------*

     (e||event).cancelBubble=true; // block click event for second header row

    }

}





Just fyi, “/indexXml” returns an xml file that attaches a second header row to filter the grid. I want sorting on this row to be disabled.



I want to do it this way instead of “myGrid.loadXML(gridQString,function()=…);” so I don’t have to replicate the code every time I call loadXML.





Also, is there a more detailed function API than this: \dhtmlx\dhtmlxGrid\doc\alpha.html? It leaves a bit to be desired. For instance, in attachHeader it gives no detail about what “values” can be. Is it a list of things? A string? And where does it say in the API that I can supply things like #master_checkbox or #combo_filter as a “value.” I’d like this in one place without having to grep through the guide documentation.

callback function used in loadXML doesn’t provide direct reference to master object ( you may use onXLE event , for which “this” will be a grid object )
In case of existing code you can change
var myGrid = dhxLayout.cells(“b”).attachGrid();
to
myGrid = dhxLayout.cells(“b”).attachGrid();


or change
myGrid.loadXML(gridQString,onInitAddlSettings);
to the
myGrid.loadXML(gridQString, function (){
myGrid.hdr.rows[2].onclick=function(e){
(e||event).cancelBubble=true; // block click event for second header row
}
});

And to the second part of my question?

Please check this article dhtmlx.com/docs/products//dhtmlx … header.htm