WebHierarchicalDataGrid: Helpful client functions for row selection

Working with row selection in Infragistics WebHierarchicalDataGrid can be complicated since it maintains independent row selection collection for each row island and basic operations (select/unselect) aren’t that obvious. I put together a few functions to make it a little bit easier.

This first function is very basic, it returns total count of selected rows across all expanded row islands, no matter what depth. The key here is get_selectedRowsResolved() method of Selection behavior which returns an array of all selected rows:

// Returns number of selected rows from all rowislands in WebHiearchicalDataGrid
// i_oGrid: Infragistics WebHiearchicalDataGrid object
function selRowsCount(i_oGrid) {
    return  i_oGrid.get_gridView().get_behaviors().get_selection().get_selectedRowsResolved().length 
}

The following function loops thru all selected rows, collecting values from specific column (useful for example for collecting IDs of selected rows). It accepts 3 parameters – WebHiearchicalDataGrid object, column key and separator character and returns a string in which selected values are separated by that character (if nothing is passed – default separator is comma). The function assumes that the column with this key exist at every level of hierarchy:

// Return list values from selected rows of Infragistics WebHiearchicalDataGrid
// i_oGrid: Infragistics WebHiearchicalDataGrid object
// i_sColumnKey: Key of column from which cells to extract values
// i_sSeparator: Separator between values in output string
function selRowsToList(i_oGrid, i_sColumnKey, i_sSeparator) {
    var sOutput = '';
    if (typeof (i_sSeparator) == 'undefined') i_sSeparator = ',';

    //Getting array of ALL selected rows accross all rowislands
    var aSelectedRows = i_oGrid.get_gridView().get_behaviors().get_selection().get_selectedRowsResolved();
    var sCellValue;

    //looping thru ALL selected rows collecting values
    for (I = 0; I < aSelectedRows.length; I++) {
        //getting cell value
        sCellValue = aSelectedRows[I].get_cellByColumnKey(i_sColumnKey).get_text();

        sOutput += sCellValue;
        if (I < aSelectedRows.length - 1) sOutput += i_sSeparator
    }

    return sOutput
}

The next function does the opposite of the previous one – it selects rows based on passed values. It accepts string with list of values and then attempts to locate a row by value from that list; if row is found – it’s selected. Function assumes that column with the key exists at at every level of hierarchy

// Selects row in WebHiearchicalDataGrid based on list of passed values
// i_oGridView: Top level grid in Infragistics WebHiearchicalDataGrid object
// i_sColumnKey: Key of column to which cells to compare
// i_sIDlist: String with list of values based on which rows are selected
// i_sSeparator: Separator between values in string with values
function listToSelRows(i_oGridView, i_sColumnKey, i_sIDlist, i_sSeparator) {
    if (typeof (i_sSeparator) == 'undefined') i_sSeparator = ',';

    var aIDlist = i_sIDlist.split(i_sSeparator);
    var aRows = i_oGridView.get_rows(); // getting collection of all rows from current gridview
    var aSelectedRows = i_oGridView.get_behaviors().get_selection().get_selectedRows(); // getting collection of selected rows from current view

    var oRow, oCell, aRowIslands;

    //looping thru all rows in current gridview
    for (var I = 0; I < aRows.get_length(); I++) { 
        oRow = aRows.get_row(I);

        //locating cell by column key
        oCell = oRow.get_cellByColumnKey(i_sColumnKey);

        //if cell's value exists in passed-in string of values - select that row
        if (Array.indexOf(aIDlist, oCell.get_text()) != -1) aSelectedRows.add(oRow);

        //getting child row islands of current row
        aRowIslands = oRow.get_rowIslands();

        //looping thru child row islands calling function itself recursively 
        for (var J = 0; J < aRowIslands.length; J++) {
            listToSelRows(aRowIslands[J], i_sColumnKey, i_sIDlist, i_sSeparator)
        } 
    }
}

The last function simple clears selection from the grid completely:

// Clear selection accross all the rowislands of the WebHiearchicalDataGrid
// i_oGrid: Infragistics WebHiearchicalDataGrid object
function clearRowSelection(i_oGrid) {
    //Getting array of groups of selected rows
    var oSelRowsCollections = i_oGrid.get_gridView().get_behaviors().get_selection().get_selectedRowsCollections();

    //Looping thru array of groups of selected rows, clearing each in turn
    for (var I = 0; I < oSelRowsCollections.length;I++ ) {
        oSelRowsCollections[I].clear();
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *