Comment parser le contenu d'un DataRepeater?

Résolu
cs_gmanouvrier Messages postés 5 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 30 avril 2008 - 30 avril 2008 à 14:05
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 2 mai 2008 à 10:27
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 avril 2008 à 20:27
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;
1
cs_gmanouvrier Messages postés 5 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 30 avril 2008
2 mai 2008 à 09:55
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);}

0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
2 mai 2008 à 10:27
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
0
Rejoignez-nous