Accueil > Forum > > > > Probleme sur un exemple de code pour un repeater tout en code Behind
Probleme sur un exemple de code pour un repeater tout en code Behind
mardi 7 juin 2005 à 18:48:36 |
Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
Bonjour tout le monde,
J'ai trouver ce code sur le lien ci-dessous
http://www.codeproject.com/aspnet/RepeaterWithControl.asp
Mais
je n'arrive pas à le faire fonctionner ? j'ai réalisé l'exemple mais nada. Il y a un
fichier joint à télécharger pour l'exemple au complet mais j'ai une
erreur à l'ouverture du fichier. Je pense qu'il me manque des bouts de
code mais je ne vois pas! A moins que ce ne soit le DataRowView qui
n'est pas renseigné? J'ai essayer en simplifiant mais rien ?
Merci d'avance
Thierry
|
|
mercredi 8 juin 2005 à 02:01:07 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

jesusonline
|
Tu peux nous dire ce que tu veux faire ?
et aussi montrer le code que tu as, ainsi que l'erreur rencontrés ?
j'ai pas regardé la source plus que ca, donc je peux pas te dire si ca
marche ou pas :p Cyril - MCP ASP.netWebmaster de : Hoshimi.CodeS-SourceS.fr
|
|
mercredi 8 juin 2005 à 08:45:18 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
Voici un exemple simplifié:
J'ai un fichier aspx (essai.aspx) avec un repeater et UC
(nosselections22.ascx) avec un label. je souhaite reproduire à l'infini
mon UC avec les données d'une base SQLserver. UC etant inclut dans le
repeater qui se trouve dans mon fichier essai.aspx.
Je me suis inspiré du code disponible à la source suivante: http://www.codeproject.com/aspnet/RepeaterWithControl.asp qui correspond exactement à ce que je souhaite.
Lorsque je lance le navigateur il n'y a pas d'erreur mais la page est
blanche? J'ai essayé de placer un "repeater1.behind()" avec un "repeater1.source = dr" à plusieurs endroits mais sans succès (ce code n'apparait pas dans le fichier exemple ?)
J'ai aussi remplacer par rapport à l'exemple la propriété "DataRowView" par "SqlDataReader". Avec "DataRowView" je ne parvenais pas à faire fonctionner. Je ne sais ci cela à de l'influance.
Merci pour tout et à bientôt
Thierry
Voici mon code
Fichier essai.aspx :
essai<%@ Page Language="vb" AutoEventWireup="false" Codebehind="essai.aspx.vb" Inherits="auto_besancon.essai"%>
<%@ Register TagPrefix="uc1" TagName="nosselection22" Src="nosselection22.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>essai</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
<uc1:nosselection22
id="Nosselection221" runat="server"></uc1:nosselection22>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</HTML>
Fichier essai.aspx.vb:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.UI.WebControls
Public Class essai
Inherits System.Web.UI.Page
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private components As System.ComponentModel.IContainer
Protected WithEvents WebCustomControl11 As CustomLabel.WebCustomControl1
Protected WithEvents Repeater1 As System.Web.UI.WebControls.Repeater
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub Repeater1_ItemDataBound(ByVal sender As
Object, ByVal e As RepeaterItemEventArgs) Handles
Repeater1.ItemDataBound
If (e.Item.ItemType = ListItemType.Item) Then
CType(e.Item.FindControl("NosSelection221"),
nosselection22).SetData(CType(e.Item.DataItem, SqlDataReader))
Repeater1.DataBind()
End If
End Sub
End Class
Fichier nosselections22.ascx
<%@ Control Language="vb"
AutoEventWireup="false" Codebehind="nosselection22.ascx.vb"
Inherits="auto_besancon.nosselection22"
TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<TABLE id="TableInfo" cellSpacing="0" cellPadding="0" width="300" border="0">
<TR>
<TD align="center" bgColor="#ffcc66" colSpan="2">
<asp:label
id="Label1" Runat="server"></asp:label></TD>
</TR>
</TABLE>
Fichier nosselections22.ascx.vb
Imports System.Data
Imports System.Data.SqlClient
Imports System.Drawing
Imports System.Web.UI.WebControls
Public Class nosselection22
Inherits System.Web.UI.UserControl
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents pnlMain As System.Web.UI.WebControls.Panel
Protected WithEvents PanelNoselection2 As System.Web.UI.WebControls.Panel
'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' SetData()
'Placez ici le code utilisateur pour initialiser la page
End Sub
Public Sub SetData(ByVal dr As SqlDataReader)
Dim requete As String
requete = "SELECT Marque FROM VoitMar"
dr = LibData.AccesBD.GetReader(requete)
Do Until Not dr.Read
Me.Label1.Text = dr("Marque")
Loop
dr.Close()
End Sub
End Class
Thierry
|
|
mercredi 8 juin 2005 à 12:40:13 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

jesusonline
|
c'est normal, ce que fais ton code (j'ai pas regardé les détails)
mais à chaque fois que asp.net va binder une nouvelle ligne tu remplis ton nosselection22
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub
Public Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound If (e.Item.ItemType = ListItemType.Item) Then CType(e.Item.FindControl("NosSelection221"), nosselection22).SetData(CType(e.Item.DataItem, SqlDataReader)) Repeater1.DataBind() End If End Sub
Or tu n'as aucune données dans ton repeater, donc aucune ligne, donc l'evenement itemdatabound n'est jamais déclenché
il faudrais donc faire un rpt1.datasource puis un databind.
et c'est la que je comprend pas trop, quand tu dis infini ?? je pige pas, l'infini c'est trés grand :D
Et dans ce cas la, si tu veux repeter ton controle une 20aine de fois, es tu sur de vouloir mettre un repeater ? ok il peut y avoir des trucs sympas, mais peut etre pas utile ... Mais la je sais pas, ce que tu veux faire :-) donc ca depend de ton utilisation
une simple boucle for suffirait peut etre ?
sinon pour faire afficher n fois un repeater, sans lui mettre des données euh ....
c'est un peu stupide quand meme :D mais un truc du genre
dim s() as string for i as integer = 0 to 20 s(i) = i next
rpt1.datasource = s rpt1.databind()
Cyril - MCP ASP.net Webmaster de : Hoshimi.CodeS-SourceS.fr
|
|
mercredi 8 juin 2005 à 14:25:13 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
Hello Cyril,
Merci pour ta réponse. "Infini" ce n'est pas le bon mot sorry, "pas limité" c'est mieux puisque je puise mes infos dans un BD. Je ne suis pas chez moi cet après midi, je vais voir ce que je peux faire avec ta réponse et je te tien informé. Merci encore
Thierry
|
|
jeudi 9 juin 2005 à 12:22:39 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
Nada je n'arrive pas 
Je t'esplique ce que je souhaite et si tu pouvais m'éclairer ce serait génial
J'ai un UC (A.ascx) qui contient un "repeater" ce repeater contient differents controls (label, image..)
Je souhaite à partir de ma BD Sql server remplir ce Repeater tout en
controlant mes controls (visible etc...) et sans utiliser ce type
d'écriture dans la page <%#
DataBinder.Eval(Container.DataItem, "Marque").tostring%>
L'exemple ci-dessous ne convient pas :
Dim da As SqlDataAdapter
Dim requete As String
requete = "SELECT Marque FROM VoitMar"
Dim ds As DataSet
ds = LibData.AccesBD.GetDataSet(requete) 'acces à ma
classe de données
Repeater1.DataSource = ds.Tables(0).DefaultView
Repeater1.DataBind()
ds.Clear()
Je souhaiterais un exemple comme avec un SqlDataReader :
Dim dr As SqlDataReader
Dim requete As String
requete = "SELECT Marque FROM VoitMar" dr = LibData.AccesBD.GetReader(requete) 'acces à ma
classe de données
Do Until Not dr.Read Me.Label1.Text = dr("Marque")
Loop
dr.Close()
Mais dans ce dernier cas comment faire apparaitre mon repeater avec ces controls ?
Merci d'avance
Thierry
|
|
jeudi 9 juin 2005 à 12:38:27 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

jesusonline
|
Arf, je suis perdus, on va traiter un problème à la fois ;) Tu veux afficher un controle x fois dans ta page ? pour l'instant il me semble que le controle ne se repete pas, il faut donc que tu donne à manger à ton repeater, lui dire combien il y a de ligne etc... donc dans la page aspx <asp:repeater > <itemtemplate> <uc1:toncontrole /> </itemtemplate> </asp:repeater> dans l'aspx.vb il faut deja que tu fasses un rpt1.datasource = "truc" ' c'est ce qui permet de repeter le nombre de ligne, donc tu fais ta requete avec tes données, et uc1:toncontrol se repetera autant de fois qu'il y a de ligne dans ton objet "truc" ensuite dans l'evenement itemdatabound du rpt ctype(e.item.findcontrol("tonuc1"), toncontrole).data = e.container.dataitem 'e.container.Dataitem correspond à la ligne en cour de l'objet "truc" ensuite dans tonuc tu rajoutes une property public property data as object get set dans le page_databind de cette objet (ou le page_load, je sais plus) tu remplis tes controles de ton UC à partir de Data, pour savoir les bon types des objet que je dis, fait un point d'arret ca te paraitre plus simple, l'autre solution c'est dans l'evenement itemdatabound du rpt dim tonuc1 as toncontrole = ctype(e.item.findcontrol("tonuc1"), toncontrole) ctype(tonuc1.findcontrol("label1"),label).text = e.dataitem("champ") J'espere que ca t'aurais aidé
Cyril - MCP ASP.netWebmaster de : Hoshimi.CodeS-SourceS.fr
|
|
jeudi 9 juin 2005 à 13:52:55 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
Avant j'ai pigé mais à partir de la je ne vois pas (je suis débutant en .net  )
public property data as object
get
set
dans le page_databind de cette objet (ou le page_load, je sais plus) tu remplis tes controles de ton UC à partir de Data,
Que fais-tu avec cette propriété et que mets tu à l'intérieur?
Je sèche completement sur le contenu behind de mon UC ? 
Merci pour tes effort en tous les cas  Thierry
|
|
jeudi 9 juin 2005 à 14:00:03 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

jesusonline
|
public class tonuc inherits UserControl private _data as object public property data as object get return _data end get set(byval value as object) _data = value end set end property public sub pag_load(s as object, e as eventargs) handles me.load 'ou me.databind me.label1.text = _data("tonchamp") end sub end class aprés pour savoir le type exact de data tu met un point d'arret sur la ligne ctype(e.item.findcontrol("tonuc1"), toncontrole).data = e.container.dataitem 'e.container.Dataitem correspond à la ligne en cour de l'objet "truc" pour connaitre le type container.dataitem qui sera aussi le type de data Je me rappelle plus des classes etc... mais l'intellisens t'aidera plus que moi ;)
Cyril - MCP ASP.netWebmaster de : Hoshimi.CodeS-SourceS.fr
|
|
jeudi 9 juin 2005 à 15:55:14 |
Re : Probleme sur un exemple de code pour un repeater tout en code Behind

coulis
|
"e. container.Dataitem" container n'est pas accepté par intellisens ? propose GetType ou Item ?
Voici le Sub réel comme avec tes paramêtres "container"
Public Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
If (e.Item.ItemType = ListItemType.Item) Then
CType(e.Item.FindControl("NosSelection221"), nosselection22).data = e.container.Dataitem 'e.container.Dataitem correspond à la ligne en cour de l'objet "truc"
End If
End Sub
L'autre méthode fonctionne (avec tous dans l'evenement itemdatabound du
rpt ) mais la dernière me parait quand même mieux et plus propre
mais problème 
On arrive au bout
Thierry
|
|
Cette discussion est classée dans : code, probleme, exemple, behind, repeater
Répondre à ce message
Sujets en rapport avec ce message
Repeater uniquement en code behind ? [ par coulis ]
Peut-on remplir un repeater depuis le code Behind sans devoir saisir en dur le nom des champs comme paramètre du databinder.Eval ? avez vous un exemp
datalist code behind [ par coulis ]
Bonjour,auriez vous un exemple pour contrôler un datalist à partir du code behind.exemple :je voudrais eviter ce code dans la page html pour un contro
Renvoi d'un string [ par zecups ]
Salut a tous,j'ai un petit probleme avec mon javascript dans mon code behind dans ma page.netje m'explique:j'ai un bouton auquel j'ai rajoute un Oncli
Pb utilisation d'un formview avec une source de données dans le code behind [ par fmosland ]
Bonjour, En fait, j'ai un formview que je bind via une méthod que j'appel dans le code-behind (sans sqldatasource ou objectDataSource...)J'ai un bouto
Accents et javascript défini dans le code behind [ par cfeltzsni ]
Bonjour, j'ai une fonction qui me permet de créer un script JavaScript depuis le code behind : private void ScriptValidation(bool EtatValid) {
Ouverture d'une page Aspx via le code behind [ par AnneLevefaude ]
Bonjour,Ma question va sans doute vous paraitre facile, mais je dois avouer que je ne sais pas comment m'y prendreEst-il possible dans le code behind
[C# 2.0] SqlDataSource en code behind [ par javajavajava ]
Bonjour,pour alimenter un gridview, je dois créer une requete sql en code behind. Lorsque cette requête n'a pas de paramètres, j'y arrive. Mais commen
recuperer propriété css dans le code behind [ par lilippx ]
Salut à tous, mon petit soucis : </asp:contentplaceholder>
Ajouter des <SelectParameters> en code behind [ par Kenshin07 ]
Comme le dit le titre, je voudrais ajouter des , mais en code behind. Parce qu'en fait je construits ma SelectCommand de l'AccessDataSource dans le co
ListBox peuplée en JS et Code Behind [ par cyclotor ]
Bonjour à tous!Dans un contrôle (ascx), j'ai du code JS que je génère depuis mon code-behind qui renseigne des ListBox. Pour renseigner ces ListBox, j
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|