Salut,
Je me demande si le nom de colonne utilisé dans un S.getColumnValue n'est pas le nom programatique, celui que tu entre dans le dernier onglet des propriétés de la colonne....
Sinon, pour résoudre ton pb de récupération de nom de colonne, plutot que de boucler sur ta vue en directe passe au <xp:this.value> de ton repeater un vecteur contenant autant d'objet que tu as de lignes dans ta vue, et les objet sont de la forme :
obj.nom
obj.desc
obj.nomPhoto
obj.idDoc
tu fabrique ce vecteur en utilisant une fonction ssjs qui elle boucle sur les entrée de la vue (et pas les docs...) en utilisant un viewNavigator, ce que je n'ai pas fait dans l'ex que je te donne mais il faut !!! (pour les perf) :
- Code : Tout sélectionner
function sjsDashBoard_getMyAudits() {
var listAudits = new java.util.Vector();
var tempActors = new java.util.Vector();
var viewAudit = database.getView("vwDash_AuditByActors");
var naUser = session.createName(context.getUser().getDistinguishedName());
var collEntry = viewAudit.getAllEntriesByKey(naUser.getCanonical(), false);
//sjs_dashBoardDebug("--------------------------------Nb d'audit pour le usr courant : " + collEntry.getCount() + ", " + naUser.getCanonical())
var e=collEntry.getFirstEntry();
var i=0;
while(e!=null && i <= 4 ){
var column:java.util.Vector = e.getColumnValues();
if( column != null ) {
var v = new Object();
//Offices / Locations/ Contract
tempActors=sjsTool_ConvertToVector(column.get(2));
var tempStr = new String();
for( var j=0; j<tempActors.size(); j++ ){
if (tempActors[j]!=""){
if (tempStr !="" )
tempStr += ", "+ tempActors[j] ;
else
tempStr += tempActors[j]
}
}
v.office = tempStr;
//Location
tempActors=sjsTool_ConvertToVector(column.get(3));
tempStr = "";
for( var j=0; j<tempActors.size(); j++ ){
if (tempActors[j]!=""){
if (tempStr !="" )
tempStr += ", "+ tempActors[j] ;
else
tempStr += tempActors[j]
}
}
v.location = tempStr;
//Contract
tempActors=sjsTool_ConvertToVector(column.get(4));
tempStr = "";
for( var j=0; j<tempActors.size(); j++ ){
if (tempActors[j]!=""){
if (tempStr !="" )
tempStr += ", "+ tempActors[j] ;
else
tempStr += tempActors[j]
}
}
v.contract = tempStr;
//Referential
v.type=column.get(5);
//Status
v.status= sjsTool_statusGetLabel("frmAudit", column.get(6));
//Confirmed
v.isconfirmed=((column.get(7)=="true")?true:false);
//Start date
if (column.get(8) != null && column.get(8) != ""){
var dt = session.createDateTime(column.get(8).toString());
v.startDate = dt.toJavaDate();
}
//End date
if (column.get(9) != null && column.get(9) != ""){
var dt = session.createDateTime(column.get(9).toString());
v.endDate=dt.toJavaDate();
}
//Lead auditor
v.leadauditor=column.get(10);
//Auditors
tempActors=sjsTool_ConvertToVector(column.get(11));
tempStr = "";
for( var j=0; j<tempActors.size(); j++ ){
if (tempActors[j]!=""){
if (tempStr !="" )
tempStr += ", "+ tempActors[j] ;
else
tempStr += tempActors[j];
}
}
v.auditors = tempStr;
//Lead auditee
v.leadauditee=column.get(12);
//Auditees
tempActors=sjsTool_ConvertToVector(column.get(13));
tempStr = "";
for( var j=0; j<tempActors.size(); j++ ){
if (tempActors[j]!=""){
if (tempStr !="" )
tempStr += ", "+ tempActors[j] ;
else
tempStr += tempActors[j];
}
}
v.auditees = tempStr;
v.id=column.get(14);
v.number=column.get(15);
//Overdue
v.overdue=((column.get(16)=="true")?true:false);
listAudits.add(v);
i++;
}
e=collEntry.getNextEntry();
}
if (e !=null )
e.recycle();
return listAudits;
}
Ensuite ton repeater parcours ce vecteur et là tu utilise ta technique pour afficher la photo (qui aura le bon nom); même si je pense que tu ne doit pas être tres loin du résultat.
Pour l'affichage tu peux aussi utiliser cette technique, UL et LI avec un CSS :
http://www.timtripcony.com/blog.nsf/d6p ... TRY-7XD5P9Fab.