Hi,
Is there any way to check (using validation or something else) if entered value is unique in a column ?
Btw, if more than two values are identical, each of them must be reported as errors
Thx
I’m using dthmlx suite 3.5 pro version
Hi,
Is there any way to check (using validation or something else) if entered value is unique in a column ?
Btw, if more than two values are identical, each of them must be reported as errors
Thx
I’m using dthmlx suite 3.5 pro version
Please, try to use something like that:
mygrid.attachEvent("onEditCell", function(stage,rId,cInd,nValue,oValue){
var counter
mygrid.forEachRow(function(id){
val=mygrid.cells(id,cInd).getValue()
if(val==nValue){
counter++
}
});
if (counter>1){
alert ("such value is already exists")
return false
}
else return true
});
Hello sematik
Here the code I’ve wrote:
(event: onCellChanged - with prototypejs )
var idColDomaine = 3;
b.setText('Contrôle d\'unicité en cours... ');
// je parcours la table une premiere fois, pour récupérer toutes les valeurs
all_values = new Hash();
datagrid.forEachRow(function(idRow) {
// L'astuce est de stocker la valeur en tant que clé d'un hash
// et le/les numéros de ligne en tant que valeur de ce hash.
// S'il y a plus d'une valeur, c'est qu'on est en précence d'un doublon
var value = datagrid.cellById(idRow, idColDomaine).getValue();
if (v = all_values.get(value)) {
v.push(idRow);
all_values.set(value, v);
}
else {
all_values.set(value, new Array(idRow));
}
});
var hasError = false;
all_values.each(function(h) {
// Plus d'une ligne partage la même valeur => Présence de doublons (ou +):
if (h.value.length>1) {
hasError = true;
h.value.each(function(idRow) {
setBackgroudColor(idRow, idColDomaine, feuRouge, 'style_image');
datagrid.setUserData(idRow, 'valide', 'false');
});
}
// Sinon, pas de pb
else {
idRow = h.value[0];
setBackgroudColor(idRow, idColDomaine, '', 'style_image');
datagrid.setUserData(idRow, 'valide', 'true');
}
});
// Message en statut
if (hasError)
sb.setText('Erreur: Valeur non unique');
else
sb.setText('Ok');
return true;