onRowSelect events not being invoked when row is deselected

I have a multi-select dhtmlxGrid (3.0). When I select a row my onRowSelect event handler is called, yet when I deselect the row the event handler is not called and that makes the grid very unusable. Somebody (SpinFusion) has posted a supposed fix (on March 14, 2012), which did not work for me. User sematik responded to that post saying to contact support via email as they hey had a fix. When I did so, support told me to post to this this forum. Aye aye. If anyone can help me out, I would much appreciate it.

Perhaps I found my own fix. At least it seems to work for me. Change dhtmlxgrid.js, line 1243 from:

			if (fl&& typeof (rid) != "undefined" && cid && !skipRowSelection) {

to:

			if (fl&& typeof (rid) != "undefined" && cid) {

Any thoughts?

I wanted to avoid modifying the code if possible. The complete section of code was originally:

			if (fl&& typeof (rid) != "undefined" && cid && !skipRowSelection) {
				self.onRowSelectTime=setTimeout(function(){
					if (self.callEvent)
						self.callEvent("onRowSelect", [
							rid,
							cid._cellIndex
						]);
				}, 100);
			} else this.callEvent("onRowSelectRSOnly",[rid]);

So my original thought was to call attachEvent on “onRowSelectRSOnly” to detect when a row was being deselected, ignoring for now the complication that this was an undocumented event. But the problem was that this event will also be invoked when the value of variable fl is false, which will be the case when you are selecting a row with a call to selectRowById and you do not want the onRowSelect handler invoked. In this case I don’t want my onRowSelectRSOnly handler invoked either, so a code modification could not be avoided.

The only side effect of the modification I can see is that when a row is deselected the onRowSelect handler will be called rather than the onRowSelectRSOnly handler. The only reference to onRowSelectRSOnly I could find was in file dhtmlxgrid_rowselector.js:

	this.attachEvent("onRowSelect", function(to){
		this._rs_doOnSelectHandler([to]);
	});
	
	this.attachEvent("onRowSelectRSOnly", function(to){
		this._rs_doOnSelectHandler([to]);
	});

So I hardly thinks it makes much difference.