begin process at 2012 05 28 04:04:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

Probleme sur un exemple de code pour un repeater tout en code Behind


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club Administrateur CodeS-SourceS
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.net
Webmaster 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

Membre Club Administrateur CodeS-SourceS

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

Membre Club Administrateur CodeS-SourceS
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.net
Webmaster 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

Membre Club Administrateur CodeS-SourceS
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.net
Webmaster 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

1 2

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&gt 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,544 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales