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 :

ASP.NET - Paramètres GridView CodeBehind [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2013
    Messages : 23
    Par défaut ASP.NET - Paramètres GridView CodeBehind
    Bonjour à tous, dans mon application web, j'ai une GridView qui doit permettre à l'utilisateur d'ouvrir un fichier log en fonction de la ligne selectionnée.

    Mon seul problème ici est de récupérer mon SqlDataSource2 dans mon CodeBehind (requête + paramètres).

    Voici la partie .aspx du GridView1 :

    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
     
    <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" 
                    AutoGenerateColumns="False" onrowdatabound="GridView1_RowDataBound" CellPadding="3" onrowcommand="GridView1_RowCommand" Width="100%">
                    <Columns>
                        <asp:TemplateField HeaderText="Libellé Job" SortExpression="LIB_JOB">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("LIB_JOB") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("LIB_JOB") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="ID_ETAPE" HeaderText="ID Etape" ReadOnly="True" 
                            SortExpression="ID_ETAPE" />
                        <asp:TemplateField HeaderText="Libellé Etape" SortExpression="LIB_ETAPE">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("LIB_ETAPE") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label2" runat="server" Text='<%# Bind("LIB_ETAPE") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="SERVEUR" HeaderText="Serveur" ReadOnly="True" 
                            SortExpression="SERVEUR" />
                        <asp:BoundField DataField="UTILISATEUR" HeaderText="Utilisateur" 
                            ReadOnly="True" SortExpression="UTILISATEUR" />
                        <asp:BoundField DataField="DATE_DEBUT" HeaderText="Date Début" ReadOnly="True" 
                            SortExpression="DATE_DEBUT" />
                            <asp:BoundField DataField="HEURE_DEBUT" HeaderText="Heure Début" ReadOnly="True" 
                            SortExpression="HEURE_DEBUT" />
                        <asp:BoundField DataField="Result" HeaderText="Resultat" SortExpression="Result" 
                            ReadOnly="True" />
                        <asp:BoundField DataField="DUREE(S)" HeaderText="Durée" 
                            SortExpression="DUREE(S)" />
                        <asp:TemplateField HeaderText="Voir" SortExpression="view">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("LIB_JOB") %>'></asp:TextBox>
                                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("LIB_ETAPE") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:LinkButton ID="viewJob" runat="server" CommandName="view" CommandArgument='<%# Bind("LIB_JOB") %>;<%# Bind("LIB_ETAPE") %>'><b>Voir détail</b></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
    Donc lorsque l'utilisateur clique sur "Voir détail", un fichier doit s'ouvrir avec les logs de l’événement en fonction du "Job" et son "Etape".

    Voici le SqlDataSource utilisé pour la selection du "log" suivi du CodeBehind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                     ConnectionString="<%$ ConnectionStrings:DWHConnectionString8 %>" 
     
                    SelectCommand="SELECT [log] FROM [LOGS_JOBS_J_J-1] WHERE (LIB_JOB = @cat) AND (ID_ETAPE = @etape)" >
                                <SelectParameters>
                                    <asp:QueryStringParameter Name="LIB_JOB" QueryStringField="cat" Type="String" />
                                    <asp:QueryStringParameter Name="ID_ETAPE" QueryStringField="etape" Type="String" />
                                </SelectParameters>
                            </asp:SqlDataSource>
    ________________________________________________________________

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    public partial class HistoriqueJobRaymark : System.Web.UI.Page
        {
            public static SqlConnection cnn = null;
     
            protected void Page_Load(object sender, EventArgs e)
            {
                cnn = new SqlConnection();
                try
                {
                    string chaineConnect = "Data Source=bdraymarkprod1;Initial Catalog=msdb;User ID=###;Password=###";
                    cnn.ConnectionString = chaineConnect;
                    cnn.Open();
                }
                catch (SqlException ex)
                {
                }
     
            }
     
            void FichierTexte(string nomFichier, string contenu)
            {   
                StreamReader sr = null;
                StreamWriter sw = null;
                string line;
                try
                {
                    sw = new StreamWriter(nomFichier);
                    sw.WriteLine(contenu);
                    sw.Close();
                    sw = null;
     
                    // Ouverture du fichier et écriture du contenu du fichier
                    sr = new StreamReader(nomFichier);
                    line = sr.ReadLine();
                    while (line != null)
                    {
                        Debug.WriteLine(line);
                        line = sr.ReadLine();
                    }
                    Process.Start(nomFichier);
                }
                finally
                {
                    // Fermeture streamreader 
                    if (sr != null)
                        sr.Close();
                    // Fermeture streamwriter 
                    if (sw != null)
                        sw.Close();
                }
            }
     
            protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                string contenu = null;
                SqlCommand select = cnn.CreateCommand();
                SqlDataReader lire_select;
                select.CommandText = SqlDataSource2.SelectCommand;
                lire_select = select.ExecuteReader();
                select.Parameters.Add(new SqlParameter("@cat", GridView1.Rows[1]));
                select.Parameters.Add(new SqlParameter("@etape", GridView1.Rows[2]));
     
     
                //Condition qui vérifie si la requête retourne quelque chose (ligne/valeur)
                if (lire_select.HasRows)
                {
                    lire_select.Read();
                    contenu = lire_select.GetValue(0).ToString();
     
                    lire_select.Close();
                }
                FichierTexte("log.txt", contenu);
            }
        }
    J'ai essayé ça, mais après compilation j'ai une erreur comme quoi mes paramètres ne sont pas déclarés. ("Must declare the scalar variable "@cat".")
    Est-il possible de tout récupérer du SqlDataSource (requête et paramètres)?

    Merci d'avance aux personnes qui se pencheront sur mon problème

    EDIT : J'ai changé le titre du post puisque finalement je fais tout à la main (en CodeBehind).

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2013
    Messages : 23
    Par défaut
    Help :-(, c'est plutôt urgent.

  3. #3
    Membre éprouvé Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Par défaut
    Euh... tu passes tes paramètres APRES avoir exécuté la requête ou je vois mal?

    Car dans ce cas il est normal qu'il te crie dessus n'ayant pas tous les paramètres au moment de l'execution!

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2013
    Messages : 23
    Par défaut
    Citation Envoyé par Joel Pinto Ribeiro Voir le message
    Euh... tu passes tes paramètres APRES avoir exécuté la requête ou je vois mal?

    Car dans ce cas il est normal qu'il te crie dessus n'ayant pas tous les paramètres au moment de l'execution!
    Bonjour Joel,

    En effet c'est mieux quand les paramètres sont déclarés avant l'exécution de la requête. Je n'ai plus d'erreur MAIS il n'arrive pas à faire ma requête, je pense qu'il récupère mal les valeurs de mon GridView (Premère et Deuxième colonne) ou alors j'utilise une mauvaise syntaxe : Voici le code :

    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
     
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                string contenu = null;
                SqlCommand select = cnn.CreateCommand();
                SqlDataReader lire_select;
                select.CommandText = "SELECT [log] FROM [LOGS_JOBS_J_J-1] WHERE (LIB_JOB = @cat) AND (ID_ETAPE = @etape)";
                select.Parameters.Add(new SqlParameter("@cat", SqlDbType.VarChar, 128));
                select.Parameters.Add(new SqlParameter("@etape", SqlDbType.VarChar, 3));
                select.Parameters["@cat"].Value = GridView1.Rows[0].ToString();
                select.Parameters["@etape"].Value = GridView1.Rows[1].ToString();
                lire_select = select.ExecuteReader();
     
                //Vérifie si le resultat de la requpete contient une ligne
                if (lire_select.HasRows)
                {
                    lire_select.Read();
                    contenu = lire_select.GetValue(0).ToString();
                    FichierTexte("log.txt", contenu);
                    lire_select.Close();
                }
    Merci encore !

  5. #5
    Membre éprouvé Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Par défaut
    Pourquoi tu ne mets pas un point d'arret et regarde ce qu'il y a dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridView1.Rows[0].ToString();
    ?

    Tu verrais tout de suite

    Autrement il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridView1.Rows[indexdelaligne].Cells[indexdelacolonne].Text;
    pour avoir le contenu.

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

Discussions similaires

  1. Exo ASP.net & c# gridView
    Par okalyptus dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/09/2013, 15h23
  2. Réponses: 0
    Dernier message: 10/05/2011, 10h31
  3. ASp.net timer et codebehind
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/02/2009, 17h16
  4. [ASP.Net/GridView] Comment effectuer une jointure ?
    Par nikalkal dans le forum Accès aux données
    Réponses: 3
    Dernier message: 20/07/2006, 09h05
  5. [ASP.NET|C#] Gridview et butonfield
    Par dumser1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/03/2006, 13h26

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