Unique Value ?

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;