IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

creation d'une table temporaire


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut creation d'une table temporaire
    Bonjour,
    Je voudrais créer un datagrid(ou autre) temporaire avec X colonnes et y insérer des données venant d'un fichier txt. La création du datagrid avec ses # colonnes et l'insertion des données pas de problème. Sachant qu'il peut y avoir X lignes j'ai mis la pagination à "True" et gérer par code.
    Le problème: la première fois que je le lance tout est nikel, le datagrid est bien rempli et je passe de page en page.La deuxième fois, il me dit que que le nom d'une colonne existe déjà(ce qui est en mon sens normal) mais je ne vois pas comment y remédier. Soit j'utilise une mauvaise méthode de création de table ou faut-il supprimer complètement le datagrid aprè consultation des données et insertion des données extraites du fichier txt vers une table SQl.
    Auriez-vous une idée ou une autre méthode?
    D'avance merci

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Comment peut-on connaître ta méthode si tu ne détailles pas plus ou n'ajoutes pas de code?

    A+

  3. #3
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Ok pardon,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    protected void import_click(object sender, EventArgs e)
            {
                //Création d'une table temporaire
     
                //DataTable cur_temp = new DataTable("cur_temp");
                //cur_temp.Clear();
                DataColumn colonne = new DataColumn();
                DataRow newligne;
                //création colonne DATE
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Date";
                colonne.ColumnName = "date";
                cur_temp.Columns.Add(colonne);
                //création colonne Heure
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Heure";
                colonne.ColumnName = "heure";
                cur_temp.Columns.Add(colonne);
                //création colonne Site
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Site";
                colonne.ColumnName = "site";
                cur_temp.Columns.Add(colonne);
                //création colonne N° Poste
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "N° Poste";
                colonne.ColumnName = "poste";
                cur_temp.Columns.Add(colonne);
                //création colonne Bâtiment
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Bâtiment";
                colonne.ColumnName = "batiment";
                cur_temp.Columns.Add(colonne);
                //création colonne Locaux
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Locaux";
                colonne.ColumnName = "locaux";
                cur_temp.Columns.Add(colonne);
                //création colonne Criteres
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Critères";
                colonne.ColumnName = "criteres";
                cur_temp.Columns.Add(colonne);
                //création colonne Niveaux
                colonne = new DataColumn();
                colonne.DataType = System.Type.GetType("System.String");
                colonne.Caption = "Niveaux";
                colonne.ColumnName = "niveaux";
                cur_temp.Columns.Add(colonne);
    //lecture et extraction du fichier txt
    Datagrd.DataSource = cur_temp;
                    Datagrd.DataBind();
    Code apsx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <asp:DataGrid id="Datagrd" runat="server" Width="100%" 
                Font-Italic="False" BackColor="LightGoldenrodYellow" 
                AutoGenerateColumns="False" AllowPaging="True" 
            BorderColor="Tan" BorderWidth="1px" CellPadding="2">
                <FooterStyle BackColor="Tan"></FooterStyle>
                <PagerStyle ForeColor="DarkSlateBlue" 
                  HorizontalAlign="Center" BackColor="PaleGoldenrod">
                </PagerStyle>
                <HeaderStyle Font-Italic="False" Font-Bold="True"></HeaderStyle>
                <Columns>
                    <asp:BoundColumn DataField="date" HeaderText="Date" SortExpression="date" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="heure" HeaderText="Heure" SortExpression="heure" ItemStyle-VerticalAlign="Middle" ItemStyle-HorizontalAlign="Justify">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Justify" VerticalAlign="Middle"></ItemStyle>
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="site" HeaderText="Site" SortExpression="site" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="poste" HeaderText="N° Poste" SortExpression="poste" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="batiment" HeaderText="Bâtiments" SortExpression="batiment" ItemStyle-HorizontalAlign="NotSet" ItemStyle-VerticalAlign="NotSet">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="locaux" HeaderText="Locaux" SortExpression="locaux" ItemStyle-HorizontalAlign="NotSet" ItemStyle-VerticalAlign="NotSet">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" />
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="criteres" HeaderText="Critères" SortExpression="criteres" ItemStyle-HorizontalAlign="NotSet" ItemStyle-VerticalAlign="NotSet">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" />
                    </asp:BoundColumn>
                    <asp:BoundColumn DataField="niveaux" HeaderText="Niveaux" SortExpression="niveaux" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
                        <HeaderStyle Font-Bold="True" Font-Italic="False" Font-Overline="False" 
                            Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                            VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
                    </asp:BoundColumn>
                </Columns>
            </asp:DataGrid>
    Message d'erreur au 2e click du bouton "import":
    Une colonne nommée 'date' appartient déjà à ce DataTable.
    Encore merci

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Je vois pas trop l'intérêt de tout ce code.

    Sais-tu que les GridView et compagnie peuvent se modéliser automatiquement en fonction de la source de données?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Tu as sans doute raison, je ne connais pas tout c'est pour cela que je demande votre avis. Mais je ne vois comment le faire automatiquement sachant que je dois récupérer certains éléments d'un fichier txt qui font réference à des données dans plusieurs bases sql. Je croyais que je devais centraliser les données récupérer des # requêtes dans un datagrid et avoir la possibilité de les modifier. Il est certains que s'il y a une méthode qui fasse cela AUTOMATIQUEMENT, je suis preneur.
    Merci

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    C'est à toi de mettre en places le code nécessaire pour récupérer les données. Une fois que les données sont prêtes tu les branches sur l'objet (GridView) qui va les afficher.

    Pour que ce soit plus lisible, je te suggère de faire une liste d'objets métier. Les données que tu manipules on un typage simple. Tu pourrais faire un truc comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    private struct MyData
    {
        public string Date { get; set; }
        public string Heure { get; set; }
        public string Site { get; set; }
    }
     
    private static List<MyData> PrepareData()
    {
        List<MyData> datas = new List<MyData>();
        // Connection à la base, récupération du datareader
        // Boucle While, remplassage de la liste
        MyData data = new MyData() { Date = "2010-08-02", Heure = "13:00:00", Site = "Paris" };
        datas.Add(data);
     
        return datas;
    }
     
    protected void import_click(object sender, EventArgs e)
    {
     
        List<MyData> datas = PrepareData();
     
        System.Web.UI.WebControls.GridView grid = new System.Web.UI.WebControls.GridView();
        grid.DataSource = datas;
        grid.DataBind();
    }
    C'est la constitution de la source de données qui est le plus important. L'utilisation d'objets métier est plus facile à comprendre à mon avis. Qu'en penses-tu?

    A+

  7. #7
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Merci pour la réponse, je vais étudier cela. Il est vrai que dès que la source de données est constituée, ce sera peut-être un peu plus simple.
    Encore merci, je ne fais de l'ASP que depuis 3 semaines excusez des questions bêtes.
    Je vous tiens au courant

  8. #8
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Salut,
    J'ai essayé de faire comme tu as dit. Je récupère bien toutes mes données dans "datas". Le fait de faire ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grid.DataSource = datas;
        grid.DataBind();
    ne remplit pas le grid même en définissant les colonnes.Avec le debug, j'obtiens data=count=18(dans mon cas). Je suis en train d'essayer de comprendre l'astuce pour les afficher dans le grid. Si tu as une idée.
    Merci d'avance
    @+

  9. #9
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Mea culpa, j'ai fait une erreur de vrai débutant.
    Ce code fonctionne correctement.
    Merci Immobilis !!

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par dark_botsay Voir le message
    Encore merci, je ne fais de l'ASP que depuis 3 semaines excusez des questions bêtes.
    Pas de soucis tant que tu montres de la bonne volonté. Ce dont tu sembles ne pas manquer.
    Citation Envoyé par dark_botsay Voir le message
    Mea culpa, j'ai fait une erreur de vrai débutant.
    Ce code fonctionne correctement.
    Peux-tu noter l'erreur? Cela peut servir à tous les débutants

    Merci

  11. #11
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 71
    Points : 56
    Points
    56
    Par défaut
    Bonjour,
    Pour les débutants (comme moi) ne faîtes pas du "copier/coller" sans réfléchir.
    J'avais déjà customisé mon grid et en copiant ton modèle de code, j'ai pris la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.UI.WebControls.GridView grid = new System.Web.UI.WebControls.GridView();
    Cette ligne devait correspondre à mon grid.
    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment eviter la creation d'une table temporaire
    Par JUSTIN Loïc dans le forum Requêtes
    Réponses: 12
    Dernier message: 26/03/2010, 15h39
  2. [ASE 12.5.3][TSQL] - Creation d'une table temporaire en dynamique
    Par CVince dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 16/06/2006, 16h30
  3. Réponses: 4
    Dernier message: 16/06/2006, 16h30
  4. Réponses: 2
    Dernier message: 02/11/2004, 13h38
  5. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo