الاثنين، 1 ديسمبر 2014

CRM 2011:JavaScript to Disply Sum of Column from Grid

1- For SubGrid

write the following JS code in the page load of CRM form:

function SubGridOnload() {
    //debugger;
    var grid = Xrm.Page.ui.controls.get('SubGrid_Name')._control;
    var sum = 0.00;
    if (grid.get_innerControl() == null) {
        setTimeout(subGridOnload, 1000);
        return;
    }
    else if (grid.get_innerControl()._element.innerText.search("Loading") != -1) {
        setTimeout(subGridOnload, 1000);
        return;
    }

    var ids = grid.get_innerControl().get_allRecordIds();
    var cellValue = "";
    for (i = 0; i < ids.length; i++) {
        if (grid.get_innerControl().getCellValue('cit_monthlyamount', ids[i]) != "") {
            cellValue = grid.get_innerControl().getCellValue('Filed_To_Sum', ids[i]);
            cellValue = (cellValue.substring(4)); //.replace(".00", "");
            var number = Number(cellValue.replace(/[^0-9\.]+/g, ""));
            sum = parseFloat(sum) + parseFloat(number);
        }
    }
    Xrm.Page.getAttribute("Field_To_Set_The_Sum").setValue(sum.toString());
}

2- For Home Grid:


function GetFieldSum() {
    //debugger;
    var sum = 0.00;
    var MonthlyAmountField_index = 0;
    
    if (window.document.getElementById('gridBodyTable') != null) {
        var gridBar = window.document.getElementById('gridBodyTable');
        if (gridBar != null && gridBar != "undefined") {
            var headers = gridBar.getElementsByTagName('TH');
            
            for (var index = 0; index < headers.length; index++) {
                var header = headers[index];
                switch (header.innerText) {
                    case "Monthly Amount":
                        MonthlyAmountField_index = index;
                        break;
                    default:
                        break;
                }
            }
        }
        if (MonthlyAmountField_index != 0) {
            //Get the Grid records
            var cellValue = "";
            var GridCtrl = window.document.getElementById('gridBodyTable');

            for (var i = 1; i < GridCtrl.rows.length; i++) {
                var cellObj = GridCtrl.rows[i].cells[MonthlyAmountField_index];
                if (cellObj != null) {
                    cellValue = cellObj.innerText;
                    cellValue = (cellValue.substring(4));
                    var number = Number(cellValue.replace(/[^0-9\.]+/g, ""));
                    sum = parseFloat(sum) + parseFloat(number);
                }
            }
        }
    }
    var ItemsSelectedInfo=window.document.getElementById('crmGrid_ItemsSelectedInfo');
    if (ItemsSelectedInfo != null) {
        var FieldDataSum = window.document.getElementById('crmGrid_FieldDataSum');
        if (FieldDataSum == null) {
            var label = document.createElement('span');
            label.id = "crmGrid_FieldDataSum";
            label.style.backgroundColor = 'yellow'
            label.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Total=</b>" + sum.toString();
            ItemsSelectedInfo.appendChild(label);
        }        
        //alert(sum);
    }      
}


ليست هناك تعليقات:

إرسال تعليق