Hi,
I use the Entreprise version of dhtmxTreeGrid and I try to create a custom Excell tree so it become read only (no editable label field).
First, is there a simpler solution ? I need all the cells of my first column to become non editable, read only tree cells.
I followed instructions from the doc, but the result is not a tree cell, but its more a common ‘ro’ cell. Here is my first attempt code :
function eXcell_rotree(cell)
{
//excell name is defined here
if(cell)
{
//default pattern, just copy it
this.cell = cell;
this.grid = this.cell.parentNode.grid;
eXcell_tree.call(this); //use methods of “tree” excell
}
this.edit = function(){ }
this.detach = function(){ }
};
eXcell_rotree.prototype = new eXcell; // nest all other methods from base class
Reading the source code, I found that the functionnality also reside in the two prototype definitions for setValueA and setValue that are set on the eXcell_tree after its created from the base class. So I tried two different techniques :
My first guess was to subclass from the eXcell_tree class instead of eXcell :
function eXcell_rotree(cell)
{
…
};
eXcell_rotree.prototype = new eXcell_tree; // nest all other methods from tree class
My second try was to entirely replicate the full eXcell tree definition without changing a byte, except for adding ‘ro’ before tree.
At this point I did not even tried to change the edit() method of the class :
function eXcell_rotree(cell)
{�};
eXcell_rotree.prototype = new eXcell;
eXcell_rotree.prototype.setValueA = function(content)
{�};
eXcell_rotree.prototype.setValue = function(valAr)
{�};
In both tries, I always run in errors or undefined grid properties (‘this.grid._tgc’ [undefined] is not an object.). My understanding is that all dhtmxTreeGrid additionnal properties are undefined at this point ( _tgc, _h2 ). In my second version, I tried to pre-create thoses properties upfront with some success for _tgc and _h2, but then I run in ‘row’ undefined, and I’m stuck there.
Finally, I gave up and went for the bad and ugly fix - I edited my codebase optimised version of dhtmlxtreegrid.js like this :
this.edit = function(){
// added by …
return;
This is working indeed, but now my solution has no more access to editable tree eXcell.
I would highly prefer a more legit solution with a clean untouched library.
Thank you,
–
Sebastien
To make “tree” cell not editable you can add following line to the treeGrid init:
treeGrid.enableTreeCellEdit(false)