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 :

GridView automatiquement enable = False


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut GridView automatiquement enable = False
    Bonjour;
    Après plusieurs recherche sur google je n'est pas trouvé la solution à mon problème, je vous explique tout :
    Je boss en VB.net/asp avec Visual Studio 2010 pour un rendu sous Sharepoint.

    J'ai créer un GridView
    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
    <asp:GridView ID="dg_logistique" runat="server" AutoGenerateColumns="False" 
        Enabled="True">
       <Columns>
         <asp:BoundField DataField="code" HeaderText="Réf. articles">
         <HeaderStyle BackColor="#92D050" />
         <ItemStyle BackColor="#CCFF99" />
         </asp:BoundField>
         <asp:BoundField DataField="designation" HeaderText="Désignation">
         <HeaderStyle BackColor="#92D050" />
         <ItemStyle BackColor="#CCFF99" />
         </asp:BoundField>
         <asp:BoundField DataField="quantite" DataFormatString="{0:0}" 
           HeaderText="Qté en cours">
         <HeaderStyle BackColor="#92D050" />
         <ItemStyle BackColor="#CCFF99" HorizontalAlign="Center" />
         </asp:BoundField>
         <asp:BoundField DataField="magasin" DataFormatString="{0:0}" 
           HeaderText="En magasin">
         <HeaderStyle BackColor="#92D050" />
         <ItemStyle BackColor="#CCFF99" HorizontalAlign="Center" />
         </asp:BoundField>
         <asp:CheckBoxField DataField="imprimer" HeaderText="Préparation">
         <HeaderStyle BackColor="#92D050" />
         <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
         </asp:CheckBoxField>
       </Columns>
      </asp:GridView>
    Puis j'ajoute mes donnée en topant dans une base sous SQL server
    La requête ce déroule très bien, j'ajoute mes infos dans le gridview sans problème, mais je souhaite cocher ou décocher mes checkbox selon les besoins, or mon datagrid est grisé donc désactivé automatiquement et je ne vois pas comment rendre le "check" possible...
    Pour l'instant j'ai vérifié:
    Le readonly
    Enable du panel dans lequels est le gridview
    Essayé de forcer l'activation en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg_logistique.enable = true
    Si vous avez besoin de plus d'info pour m'aider n'hésitez pas.
    Merci d'avance.

  2. #2
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Salut,

    en fait dans ton cas, il ne faut pas utiliser le CheckBoxField mais plutot un TemplateField dans lequel tu mets une checkBox asp.

    En effet dans le cas de l'utilisation du CheckBoxField, celui-ci devient modifiable seulement si l'ensemble de la ligne est modifiable par "l'action" Update.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Salut bizet;

    Dans le TemplateField, j'ai plusieurs choix ou insérer mon checkbox
    - AlternatingItemTemplate
    - EditItemTemplate
    - FooterTemplate
    - HeaderTemplate
    - ItemTemplate

    Lequel je dois choisir ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Dans le ItemTemplate. De plus, il me semble qu'il faut que tu ajoute la propriété enabled ="true" à ton controle CheckBox.

    Si tu veux que ce soit lié à tes données de base en mettant la propriété

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Checked='<% Eval("TonChampBooléen") %>'
    Ca devrait fonctionner

    Edit Par contre le moyen le plus "pratique" de répercuter la modification de ta CheckBox dans ta BDD est d'utiliser l'édition de ta grid comme l'a dit bizet à travers l'action Update de ta DataSource

  5. #5
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Alors alors, je sais pas trop si je vais dans la bonne direction, mais désormais j'ai la possibilité de checker mon checkbox
    voilà le code que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:TemplateField HeaderText="Préparation">
           <ItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" Enabled="true" />
           </ItemTemplate>
           <ItemStyle HorizontalAlign="Center" />
         </asp:TemplateField>
    Dite moi si je me plante totalement...
    Maintenant je voudrais lié les données avec le résultat de ma requête et après une fois que je check ou inversement réalisé l'update


    Je pense rajouter un bouton en dessous de mon gridview pour validé justement ces check...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Alors non, le plus simple est de procéder autrement:
    Je ferais plutôt un truc plus ou moins comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:TemplateField HeaderText="Préparation">
           <ItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" Enabled="false" Checked ='<%# Eval("TonChamp")  %>' />
           </ItemTemplate>
           <EditItemTemplate>
              <asp:CheckBox ID="CheckBox1" runat="server" Enabled="false" Checked ='<%# Bind("TonChamp")  %>'/>
           </EditItemTemplate>
           <ItemStyle HorizontalAlign="Center" />
         </asp:TemplateField>
    En pensant bien à ajouter dans les propriétés de ta Grid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AllowAutomaticUpdate = "true"
    Il faut ensuite que tu configure l'action Update de ta DataSource liée à ta Grid pour que les modifications soient bien prises en compte.

  7. #7
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Outch papouuu

    Erreur lors de la création d'un contrôle - Panel_Logistique
    Impossible de créer un objet de type 'System.Boolean' à partir de sa représentation sous forme de chaîne, '<% Eval("imprimer") %>', pour la propriété 'Checked'.
    De plus je n'ai pas accès a AllowAutomaticUpdate

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    Tu as du oublier les # avant le Eval.

    regarde ce code en exemple pour construire ta grid:

    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
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                AutoGenerateEditButton="True" DataKeyNames="ID_Article" 
                DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="ID_Article" HeaderText="ID_Article" ReadOnly="True" 
                        SortExpression="ID_Article" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("Nom_Article") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("FDS") %>' Enabled="false" />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Bind("FDS") %>' />
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
     
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:prodchimiquesConnectionString %>" 
                SelectCommand="SELECT ID_Article, Nom_Article, FDS FROM Article"
                UpdateCommand= "UPDATE Article SET FDS=@FDS WHERE ID_Article=@ID_Article">
            </asp:SqlDataSource>
    Il fonctionne très bien chez moi avec mes données

    Edit: et pour le AllowAutomaticUpdate, tu as raison j'utilise des contrôles différents, pour le Grid de base c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AutoGenerateEditButton="True"

  9. #9
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    En effet avec les " # " ça fonctionne !
    Les checkbox de mon GridView sont éditables.

    J'ai rajouter a ma requête SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ISNULL(l.Imprimer_LA, 0) as imprimer
    Afin d'éviter l'erreur du "null" ne peut pas être transformer en valeur booleen

    Merci de ton aide papouuu !

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

Discussions similaires

  1. [C#] datagrid enable = false --> plus de scrollbar??
    Par cortex024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2006, 18h19
  2. Réponses: 4
    Dernier message: 06/01/2006, 18h41
  3. [SWT] CheckBox et Enabled(false)
    Par BiM dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 16/12/2005, 12h14
  4. Réponses: 11
    Dernier message: 14/01/2005, 17h29
  5. [VB.NET] ForeColor d'un control avec Enabled=False
    Par jennings dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/12/2004, 14h41

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