docs: function sortRowsByPrio(prioArray, cancelSort) {
      var oThis = this;
      if (cancelSort) {
          this.rows = new Array();
          if (this.options.values) {
              $.each(this.options.values, function (i) {
                  var rowObj = {};
                  rowObj.value = this;
                  rowObj.valueIndex = i;
                  oThis.rows.push(rowObj);
              });
          }
      }
  
      var evalStr = function evalStr(i) {
          if (i == prioArray.length - 1) {
              return 'by(prioArray[' + i + '].field, prioArray[' + i + '].sortType)';
          } else {
              return 'by(prioArray[' + i + '].field, prioArray[' + i + '].sortType,' + evalStr(i + 1) + ')';
          }
      };
  
      var by = function by(field, sortType, eqCall) {
          var callee = arguments.callee;
          return function (a, b) {
              var v1 = $(a.value).attr(field);
              var v2 = $(b.value).attr(field);
              var dataType = oThis.gridComp.getColumnByField(field).options.dataType;
              if (dataType == 'Float') {
                  v1 = parseFloat(v1);
                  v2 = parseFloat(v2);
                  if (isNaN(v1)) {
                      return 1;
                  }
                  if (isNaN(v2)) {
                      return -1;
                  }
                  if (v1 == v2 && eqCall) {
                      return eqCall();
                  }
                  return sortType == 'asc' ? v1 - v2 : v2 - v1;
              } else if (dataType == 'Int') {
                  v1 = parseInt(v1);
                  v2 = parseInt(v2);
                  if (isNaN(v1)) {
                      return 1;
                  }
                  if (isNaN(v2)) {
                      return -1;
                  }
                  if (v1 == v2 && eqCall) {
                      return eqCall();
                  }
                  return sortType == 'asc' ? v1 - v2 : v2 - v1;
              } else {
                  v1 = oThis.gridComp.getString(v1, '');
                  v2 = oThis.gridComp.getString(v2, '');
                  try {
                      var rsl = v1.localeCompare(v2);
                      if (rsl === 0 && eqCall) {
                          return eqCall();
                      }
                      if (rsl === 0) {
                          return 0;
                      }
                      return sortType == 'asc' ? rsl : -rsl;
                  } catch (e) {
                      return 0;
                  }
              }
          };
      };
  
      this.rows.sort(eval(evalStr(0)));
  }