Tableau dynamic en asp.net

komard Messages postés 7 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 20 mai 2009 - 12 juil. 2004 à 22:04
komard Messages postés 7 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 20 mai 2009 - 19 juil. 2004 à 09:19
salut et merci d'avance ...

j'ai un problème tout bidon à résoudre ... pour quelqu'un qui s'y connait en asp.net :

je veux créer un tableau dynamic avec disons 3 colonnes et une ligne au début (qui se créée onPageLoad), puis rajouter des lignes au fur et à mesure que je clique sur un bouton !

ça fait à peu près ça :

... sub button1_click (...)
dim row as new tablerow
dim cell as new tablecell

row.cells.add(cell)
table.rows.add(row)
end sub

(avec tout le code autour bien sur : déclaration de "table" etc ...)

il n'y a pas d'erreur, au chargement de la page, le tableau contient une ligne, ensuite je clique sur le bouton 1, et là, le tableau contient deux lignes ... c'est après que ça se gâte quand je clique une deuxième fois sur le bouton et que plus ne rien ne se passe, à part le rechargement de la page ! (bref, aucune ligne ne s'ajoute après la deuxième) je pense qu'il y a une histoire avec les variables qui sont réinitialisées au rechargement de la page mais je ne m'y connais pas assez !

j'idolâtre les gens qui sont forts en ASP.NET ... ;-) !

merci beaucoup !

doudou

p.s : si je fais une boucle "for" ou "do ... while", j'arrive à ajouter autant de lignes que je veux, seulement il faut qu'une seule ligne s'ajoute quand je clique sur le bouton !

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 juil. 2004 à 22:25
Ton problème m'interesse malheureusement je n'ai pas le temps ce soir, ni demain soir, donc repond à ce message mercredi, au cas où j'y oublierais

Je peux cependant expliquer ton problème

tu fais ds le page_Load un ajout d'une cellule
idem dans le btn_click

la premiere fois que tu charges ta page, tu fais que la page_load donc il t'ajoute qu'une cellule

mais qd tu cliques, il te fait le page_load plus le click ... tu peux verifier si tu veux en ajoutant cell.text = now.toLongTimeString, tu verras que tu n'ajoutes pas de cellule à la premiere fois que tu charges la page

pour palier à ce probleme tu peux faire dans le page_load

if not page.ispostback

dim row as new tablerow
dim cell as new tablecell

row.cells.add(cell)
table.rows.add(row)

then

Ton problème est donc un problème de Postback, j'ai encore pas trop reflechi à la question, je pense qu'il faudras utiliser le viewstate, ou une astuce du genre, mais la j'ai pas plus de temps ni la tete à ca pour y regarder [:'(]

Bon courage

@+

Cyril
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 juil. 2004 à 13:41
dsl pour le retard.

Voici ce que j'ai fait, j'ai pas pu utiliser le viewstate car il est not serializable donc j'ai utilisé une variable sessions :
voici le code, il est pas commenté mais tres simple


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Placez ici le code utilisateur pour initialiser la page

       Dim tableau As New System.Web.UI.WebControls.Table

        If Not Page.IsPostBack Then

            Dim row As New TableRow
            Dim cell As New TableCell
            cell.Text = Now.ToShortTimeString & Now.Millisecond & "Page_load"

            row.Cells.Add(cell)
            tableau.Rows.Add(row)
            Page.Controls.Add(tableau)
            Session("Tableau") = tableau

        End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Tableau As System.Web.UI.WebControls.Table = CType(Session("Tableau"), Table)

        Dim row As New TableRow
        Dim cell As New TableCell
        cell.Text = Now.ToShortTimeString & Now.Millisecond
        row.Cells.Add(cell)
        Tableau.Rows.Add(row)
        Page.Controls.Add(Tableau)
        Session("Tableau") = Tableau

    End Sub



si tu comprend pas tout, tu n'as qu'a me le dire, et je t'expliquerais

@+

Cyril
0
komard Messages postés 7 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 20 mai 2009
19 juil. 2004 à 09:19
salut !

je débute mais je comprends bien ce que tu fais, par contre j'aurais pas moi-même pensé à faire cela ! j'ai pas encore testé le code mais je te remercie d'avoir cherché (et trouvé d'ailleurs) pour m'aider !

à bientôt !

doudou
0
Rejoignez-nous