changing master checkbox behavior without modifying dhtmlxg


#1

Hi,



I would like to change master checkbox behavior. I have seen other posts that suggest modifications to dhtmlxgrid_filter.js I want to try an alternative way because I am using this file on many pages and only one requires a different behavior. I am trying to do this using jquery as follows:





$(“div.hdrcell”).find(“input[type=checkbox]”).unbind(“click”).click(

        function(){

alert(“do nothing”);

}

);



my alert(“do nothing”) does get triggered in ADDITION rather then INSTEAD of the old behavior. Any idea what I should try ?



thanks!!!



Victoria


#2

Instead of changing existing one, you can create a custom one

Add the next code to the page or separate js file

dhtmlXGridObject.prototype.in_headermy_checkbox=function(t,i,c){
t.innerHTML=c[0]+""+c[1];
var self=this;
t.firstChild.onclick=function(e){
self._build_m_order();
var j=self._m_order?self._m_order[i]:i;
var val=this.checked?1:0;
self.forEachRowA(function(id){
var c=this.cells(id,j);
if (c.isCheckbox()) c.setValue(val);
});
(e||event).cancelBubble=true;
}
}

Now you can use #my_checkbox in grid’s header
Of course, you can change above code in any necessary way.


#3

This is great! Thank you so much!

Victoria


#4

Hi,

I’m using dhtmlx grid on a Ruby on Rails project.

I have a checkbox in each line, attached to this function:

function doOnCheckBoxSelected(rID, cInd, state)
{
if (state==‘1’)
{
grid.cells(rID, 11).setValue(“Aprovado”);
var now = new Date();
now.format(“yyyy/mm/dd”);
grid.cells(rID, 10).setValue(now);
dp.setUpdated(rID, true);
}
else if (state==‘0’)
{
grid.cells(rID, 11).setValue(“Aprovacao Pendente”);
grid.cells(rID, 10).setValue("");
dp.setUpdated(rID, true);
}

		}

I want to use a custom master checkbox to do the same function as the normal checkbox on each line, which updates a different cell depending on the value of the checkbox.

Is this feasible? How can I achieve this?

Thanks


#5

You can use above code snippet, just replace the action payload with code necessary in your case

self.forEachRowA(function(id){ if (val){ self.cells(id, 11).setValue("Aprovado"); var now = new Date(); now.format("yyyy/mm/dd"); self.cells(id, 10).setValue(now); dp.setUpdated(id, true); } else { self.cells(id, 11).setValue("Aprovacao Pendente"); self.cells(id, 10).setValue(""); dp.setUpdated(id, true); } } );


#6

I have applied the suggestion for #my_checkbox:

myGrid.setHeader("id,1,#my_checkbox,crop,…

I have included a js file with the suggested code.

In my header, instead of seeing a checkbox, I see “#my_checkbox”. What might be the problem? Thanks.


#7

As sometimes happens, merely asking the question makes the light go on. I was running the code too early in the loading of my page. Once I fixed this, the solution works perfectly. Thanks!