Comment parser le contenu d'un DataRepeater? [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
30 avril 2008
-
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour,

Je cherche à Parser le contenu d'un repeater.
J'ai une source de données qui pointe sur une methode me retournant un tableau d'objets. Je link, pas de problème.

Je crée un bouton  avec un commandName.
Sur l'evennement, en code behind, je vois bien que mon repeater.items.count=21, mais les dataItems sont 'null'.

J'aimerais faire une sorte de foreach() afin d'évaluer et traiter toutes les lignes de mon repeater.
Est-ce possible? ou dois-je passer par une mise en viewState du tableau d'objet(ce qui serait très lourd).

Merci beaucoup.

GillesM

3 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
25
Salut

Avec la methode findControl tu dois y arriver

exemple
dans le HTML
tu as un id="Te xtBox1"
Et dans le code source tu recupere

TextBox txt = repeater1.findControl("TextBox1") as TextBox;
Messages postés
5
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
30 avril 2008

Bonjour,

En effet, le findControl me retrouve bien les infos control par control. Mais visiblement, si mon repeater est chargé avec ,par exemple, un tableau d'objets donné(ici TrackInfo[]), je ne peux pas récupérer les objets mais bien des valeurs text ou autre, control par control :


protected

void repetTitres_ItemCommand(
object source, 
RepeaterCommandEventArgs e){

//ObjectDataSourceTitres

TrackInfo[] ti = 
new
TrackInfo[repetTitres.Items.Count];

int cpt = 0;

foreach (
RepeaterItem titre 
in repetTitres.Items){

string leNom = ((
TextBox)titre.FindControl(
"txtTitre")).Text;//ça c'est OKti[cpt] = (

TrackInfo)titre.DataItem;//c'est ça qui ne marche pas :(}

extraction.

titresCDA.Import(cmbDrive.SelectedValue, ti);}

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
25
Salut,

ti[cpt] = (

TrackInfo)titre.DataItem

Avec ca doit passera peut etre le cast me semble mal placé, analyse avec le deboger en mettant les parenthese au bon endroit
C'est le dataitem qui est de type TrackInfo et pas titre il me semble cart titre est de type RepeaterItem

ti[cpt] = (

TrackInfo)(titre.DataItem)

Bon coding