ExtJS4 - how to get parent grid on selectionchange?

Madd0g picture Madd0g · Apr 10, 2012 · Viewed 6.9k times · Source

I have little experience with ExtJS3 and now starting with version 4.

In my controller, I have this:

init: function ()
{
    this.control({
        "userlist":
        {
            selectionchange: function (view, selected, opts)
            {
                 //get to grid??
            }
        }
    });
}

How can I access the grid that this event happened on, without using id's? I want to enable/disable buttons on the grid toolbar (tbar) if there are items selected, but I don't want to give anything id's (not the bar, not the individual buttons)

EDIT: the solution was to use the refs property in the controller:

refs:
[
    {
        ref: "list",
        selector: "userlist"
    }
],


selectionchange: this.activateTbButtons

activateTbButtons: function (selected, opts)
{
    if (selected.selected.length == 1)
    {
        var tb = this.getList().query("toolbar");
    }
}

Answer

Adezj picture Adezj · Nov 16, 2012

Just found out that you can use the attribute view, and views under Ext.selection.Model.

This can be useful in cases when you let's say open multiple instances of your objects.

So, to access the grid in your example:

selectionchange: function (view, selected, opts) {
 //get to grid??
 var grid = view.view.ownerCt;
}