Hi guys, a have a grid using json to load data in grid. This grid is created by a method of an object.
Everything looks good. I had enabled smart rendering option " gridPrincipal.enableSmartRendering(true, 40); " … but it do not parse new itens on grid on scroll. Looking o chrome debbug I could see that there wasnt any request to the server on scroll …
My Method that creates the grid on application:
this.iniciagridPrincipal = function (json)
{
var strLabel = “”;
var strIDCol = “”;
var strColWidth = “”;
var strColAlign = “”;
var strColSorting = “”;
var strColType = “”;
var strHeader = “”;
var arrayfnColValidators = [];
for (var x =0; x<json.colunas.length; x++) //var x = 0; x < json.abas.length; x++
{
var Label = new String(json.colunas[x].label);
strLabel = strLabel + Label + ",";
var IDCol = new String(json.colunas[x].name);
strIDCol = strIDCol + IDCol + ",";
var ColWidth = new String(json.colunas[x].ColWidth);
strColWidth = strColWidth + ColWidth + ",";
var ColAlign = new String(json.colunas[x].ColAlign);
strColAlign = strColAlign + ColAlign + ",";
var ColSorting = new String(json.colunas[x].ColSorting);
strColSorting = strColSorting + ColSorting + ",";
var ColType = new String(json.colunas[x].ColType);
strColType = strColType + ColType + ",";
var Header = new String(json.colunas[x].Header);
strHeader = strHeader + Header + ",";
arrayfnColValidators.push(json.colunas[x].fnColValidators); /* [ "NotEmpty,ValidInteger", "ValidEmail", null, null, null, "ValidDate" ] */
}
// tira virgula do final
strLabel = strLabel.substring(0,(strLabel.length -1));
strIDCol = strIDCol.substring(0,(strIDCol.length -1));
strColWidth = strColWidth.substring(0,(strColWidth.length -1));
strColAlign = strColAlign.substring(0,(strColAlign.length -1));
strColSorting = strColSorting.substring(0,(strColSorting.length -1));
strColType = strColType.substring(0,(strColType.length -1));
strHeader = strHeader.substring(0,(strHeader.length -1));
gridPrincipal = layoutBuscar.cells(json.container).attachGrid();
gridPrincipal.setImagePath(strImagensDir);
gridPrincipal.setHeader(""+strLabel+"");
gridPrincipal.setColumnIds(""+strIDCol+"");
gridPrincipal.setInitWidths(""+strColWidth+"");
gridPrincipal.setColumnMinWidth(150,100);
gridPrincipal.setColAlign(""+strColAlign+"");
gridPrincipal.setColTypes(""+strColType+"");
gridPrincipal.setColSorting(""+strColSorting+"");
gridPrincipal.setSkin("dhx_skyblue");
gridPrincipal.enableBlockSelection();
//gridPrincipal.enableAlterCss("even", "uneven");
gridPrincipal.enableCellIds(true);
gridPrincipal.enableKeyboardSupport(true);
gridPrincipal.enableMultiselect(true);
NomedoModulo.gridPrincipalIniciaMenuContextual(json);
if (json.permitidoEditarNaGrid)
{
/* gridPrincipal.enableEditEvents(false,true,true); */
gridPrincipal.enableValidation(true, true);
gridPrincipal.setColValidators(arrayfnColValidators);
}
else
{
gridPrincipal.enableEditEvents(false, false, true);
}
gridPrincipal.attachEvent("onBeforeSorting",function(ind, gridObj, direct)
{
layoutBuscar.cells("b").progressOn();
gridPrincipal.setSortImgState(true,ind,direct);
gridPrincipal.clearAndLoad(json.dataSource+"?direcao="+direct+"&coluna="+ind, function ()
{
layoutBuscar.cells("b").progressOff();
if(CommerceManager.isLog)
{
CommerceManager.log("gridPrincipal ordenada");
}
}, json.dataSourceType);
return false;
});
gridPrincipal.attachEvent("onRowDblClicked", function (id)
{
if(CommerceManager.isLog)
{
CommerceManager.log("Duplo clique sobre a linha "+id+" da grid Principal selecionada");
}
if (! json.permitidoEditarNaGrid)
{
NomedoModulo.abreWindowEdita(1);
}
return true;
});
gridPrincipal.attachEvent("onEditCell", function (stage,rId,cInd,nValue,oValue)
{
if (stage==1)
{
if(CommerceManager.isLog)
{
CommerceManager.log("Célula "+cInd+" da grid preparada para edição na linha "+rId+"");
}
var colunaAberta = CommerceManager.pega("c_"+rId+"_"+cInd+"").getElementsByTagName("input");
var input = colunaAberta[0];
input.onkeypress = function()
{
if(CommerceManager.isLog)
{
//CommerceManager.log("Célula "+cInd+" da grid preparada para edição na linha "+rId+"");
CommerceManager.log("Input c_"+rId+"_"+cInd+" alterado para " + this.value);
}
/* fazer validacao aqui */
};
//c_1002_1
return true;
}
else if (stage==2)
{
if (nValue!=oValue)
{
var msg="Valor alterado de "+oValue+" para "+nValue+" na célula "+cInd+" da linha "+rId+"";
if(CommerceManager.isLog)
{
CommerceManager.log(msg);
}
/* fazer validacao aqui */
/* window.parent.atencao(msg); */
return true;
}
else
{
if(CommerceManager.isLog)
{
CommerceManager.log("Nenhuma informação alterada na célula "+cInd+" da linha "+rId+"");
}
return true;
/* window.parent.atencao("nada alterado"); */
}
}
});
gridPrincipal.attachEvent("onDistributedEnd", function()
{
if(CommerceManager.isLog)
{
CommerceManager.log("Dados parseados na grid");
}
});
gridPrincipal.attachEvent("onScroll", function(sLeft, sTop)
{
if(CommerceManager.isLog)
{
/* CommerceManager.log("Rolagem na grid"); */
}
return true;
});
gridPrincipal.attachEvent("onClearAll", function()
{
if(CommerceManager.isLog)
{
CommerceManager.log("Grid limpa");
}
});
gridPrincipal.attachEvent("onKeyPress", function (code, ctrl, shift)
{
var idgrid = gridPrincipal.getSelectedRowId();
if (code==46 && shift) /* delete */
{
if(CommerceManager.isLog)
{
CommerceManager.log("Tecla DELETE pressionada sobre a linha "+idgrid+" da grid Principal ");
}
if (window.confirm('Deseja realmente excluir?'))
{
gridPrincipal.deleteSelectedItem();
window.parent.atencao('excluído com sucesso');
}
}
if (code==13 && shift) /* enter */
{
if(CommerceManager.isLog)
{
CommerceManager.log("Tecla ENTER pressionada sobre a linha "+idgrid+" da grid Principal ");
}
if (gridPrincipal.getSelectedRowId())
{
NomedoModulo.abreWindowEdita(1);
}
}
if (code == 67 && ctrl)
{
if (!gridPrincipal._selectionArea)
{
return alert("Selecione um bloco de informações antes de copiar");
}
else
{
gridPrincipal.setCSVDelimiter("\t");
gridPrincipal.copyBlockToClipboard();
}
}
if (code == 86 && ctrl) {
gridPrincipal.pasteBlockFromClipboard();
}
return true;
});
gridPrincipal.attachEvent("onRowSelect", function (id)
{
if(CommerceManager.isLog)
{
CommerceManager.log("Linha "+id+" da grid Principal selecionada ");
}
if (json.expandirOnSelectItem)
{
layoutPrincipal.cells(json.idCelulaexpandirOnSelectItem).expand();
}
NomedoModulo.iniciaPainelTabOnSelecItem(json.confAbasOnSelecItem);
NomedoModulo.visualizaRapido();
NomedoModulo.iniciaformEditarRapido(json);
layoutPrincipal.cells("b").showHeader(); /* forca mostrar header, bug esconde header ao attach tabbar */
return true;
});
gridPrincipal.init();
gridPrincipal.enableSmartRendering(true, 40);
gridPrincipal.load(json.dataSource, function ()
{
gridPrincipal.attachHeader(""+strHeader+"");
gridPrincipal.setSizes();
if(CommerceManager.isLog)
{
CommerceManager.log("Dados gridPrincipal parseados");
}
}, json.dataSourceType);
/* gridPrincipal.parse(json.dataSource,"json"); */
/* gridPrincipal.sync(dataStore); */
/* processor */
if(json.usarDataProcessor)
{
NomedoModulo.criaProcessor({
tipo : "grid",
obj : gridPrincipal,
iAssociativo : "gridPrincipal",
strURL : json.urlProcessor,
arrayColunas : json.colunas,
});
}
if(CommerceManager.isLog)
{
CommerceManager.log("Grid gridPrincipal iniciada");
}
};