Select / Deslect Row in DHTMLGrid

Hi Guys



I have a grid implimentation that lists a set of records with various statuses

These Status indicate which specific actions a user can do with the record by Enabling or disabling form elements on the page



For example on item might need authorisation so selecting the record would enable the authorise button on the page



Here is my code snippet for the grid set up



mainGrid = new dhtmlXGridObject(‘recordgrid’);

mainGrid.setImagePath(“codebase/imgs/”);

mainGrid.setSkin(“light”);

mainGrid.setOnRowDblClickedHandler(doOnRowDblClicked);

mainGrid.attachEvent(“onRowSelect”,doOnRowSelected);

mainGrid.enableRowsHover(true,‘grid_hover’);

mainGrid.init();

mainGrid.loadXMLString("<%=DataSet%>");





function doOnRowSelected(rowId)

{

getCellValue(rowId,5);

}



function doOnRowDblClicked(rowId)

{

window.open(“SBS_ReviewClaimTabbed.aspx?ID=”+rowId);

}



function getCellValue(rowId,columnIndex)

{

var value = mainGrid.cells(rowId,columnIndex).getValue();

document.getElementById(“btn_edit”).disabled = false;

}



All I need is a way to toggle a selected Row



eg

something like





mainGrid.attachEvent(“onRowDeSelect”,doOnRowDeSelected);



function doOnRowDeSelected(rowId)

{

resetButtons();

}



is this possible - have I missed something



cheers



Rob







There is no separate onRowDeSelect event, but you can use onBeforeSelect for the same purpose


mygrid.attachEvent(“onBeforeSelect”,function(new_id,old_id){
if (new_id != old_id)
alert(“row “+old_id+” most probably , will be unselected”);
return true;
});

Because the row may be unselected only when another row selected in grid, the snippet above will fire each time before row unselection.





Ok - I agree yes you solution works provided a different row is selected -, however - what I am after is unselecting the current row without selecting a new one thus the page buttons would then reset to their preselected



conditions



I have played a little more and expanded my doOnRowSelected function to this



var selectedrow = -1;



function doOnRowSelected(rowId)



{



if ((selectedrow == -1)||(selectedrow!=rowId))



{



selectedrow=rowId;



getCellValue(rowId,5);



alert(selectedrow);



}



else



{



selectedrow = -1;



mainGrid.clearSelection;



resetButtons();



alert(selectedrow);



}



}



ie I have added a global selectedrow var that track the selected row and this works fine



except after deselection the previously selected row remains highlighted.



Any suggestions for this final piece of the puzzle :slight_smile:



Cheers for your previously super fast response;



Rob



 



 


Cracked It ! - with a hybrid of your solution



mainGrid.attachEvent(“onBeforeSelect”,doOnBeforeSelect);



function doOnBeforeSelect(new_id,old_id)



{



if ((selectedrow == -1)||(selectedrow!=new_id))



{



mainGrid.clearSelection;



return true;



}



}


function doOnRowSelected(rowId)



{



if ((selectedrow == -1)||(selectedrow!=rowId))



{



selectedrow=rowId;



getCellValue(rowId,5);



alert(selectedrow);



}



else



{



selectedrow = -1;



resetButtons();



alert(selectedrow);



}



}



Thanks for pointing me in the right direction



 



Rob