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 :

Desactiver 1 control (textbox) dans 1 templateColumn d'1 Datagrid ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut Desactiver 1 control (textbox) dans 1 templateColumn d'1 Datagrid ?
    Bonjour,
    j'ai 1 datagrid avec 2 colonnes de type templateColumn (pour pouvoir les modifier avec 1 EditCommandColumn) mais selon les "circonstances" il faudrait que j'empêche la modification de l'une ou l'autre des colonnes...
    Pour être plus clair voici 1 partie de mon 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
    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
     
    <%@ Control Language="vb" AutoEventWireup="false" Codebehind="BonsLivraisonsCtrlAdresse.ascx.vb" Inherits="Sagem.DNN.Modules.BonsLivraisonsCtrlAdresse.BonsLivraisonsCtrlAdresse" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    ....
    <asp:datagrid id="DG_CtrlAdresse" runat="server" Width="1800px" MaxWidth="2000px" AllowSorting="True"
    	CellPadding="0" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#3366CC"
    	AutoGenerateColumns="False" GridLines="None"
    	OnEditCommand="Edit"
         OnUpdateCommand="Update"
         OnCancelCommand="Cancel">
         ....
    	<Columns> 
    	<asp:EditCommandColumn HeaderText="Action" HeaderStyle-ForeColor="red" HeaderStyle-Font-Bold="True"
    	HeaderStyle-HorizontalAlign="Left" ItemStyle-width="100px"
    	ItemStyle-HorizontalAlign="Left" ItemStyle-ForeColor="red" ItemStyle-Font-Bold="True"
    	CancelText="Annuler" UpdateText="MAJ" EditText="Modifier">
    	</asp:EditCommandColumn>
    	<asp:BoundColumn DataField="Ad_idAdresse" HeaderText="Adresse" Visible="false" ReadOnly="true"></asp:BoundColumn>
    	<asp:BoundColumn DataField="En_idEntreprise" HeaderText="Adresse" Visible="false" ReadOnly="true"></asp:BoundColumn>
     
    	<asp:TemplateColumn HeaderText="Entreprise">
    		<ItemTemplate>
                 <%#Container.DataItem("En_sNom")%>
            </ItemTemplate>
    		<EditItemTemplate>
    			<asp:TextBox id="TextBox2" name="TextBox2" Value='<%#Container.DataItem("En_sNom")%>' runat="Server" Width="400" ></asp:TextBox>
    		</EditItemTemplate>
    		<ItemStyle Width="500px"></ItemStyle>
    	</asp:TemplateColumn>
     
    	<asp:BoundColumn DataField="Si_sNomSite" HeaderText="Site" ReadOnly="true" ItemStyle-Width="100px"></asp:BoundColumn>
     
    	<asp:TemplateColumn HeaderText="Adresse" >
    		<ItemTemplate>
                 <%#Container.DataItem("Ad_sAdresse")%>
            </ItemTemplate>
    		<EditItemTemplate>
    			<asp:TextBox id="TextBox1" name="TextBox1" Value='<%#Container.DataItem("Ad_sAdresse")%>' runat="Server" Width="400" ></asp:TextBox>
    		</EditItemTemplate>
    		<ItemStyle Width="500px"></ItemStyle>
    	</asp:TemplateColumn>
     
    	....	
    		<asp:TemplateColumn HeaderText="Cocher pour<br/>invalider l'entreprise" ItemStyle-HorizontalAlign="Center">
    			<ItemTemplate>
    				<asp:CheckBox ID="chkSelectionEn"  Runat="server" />
    			</ItemTemplate>
    			<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
    		</asp:TemplateColumn>
    		<asp:TemplateColumn HeaderText="Cocher pour<br/>invalider l'adresse" ItemStyle-HorizontalAlign="Center">
    			<ItemTemplate>
    				<asp:CheckBox ID="chkSelectionAd"  Runat="server" />
    			</ItemTemplate>
    			<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
    		</asp:TemplateColumn>
    		<asp:TemplateColumn HeaderText="Cocher pour mettre en attente" ItemStyle-HorizontalAlign="Center">
    			<ItemTemplate>
    				<asp:CheckBox ID="chkAttente"  Runat="server" />
    			</ItemTemplate>
    			<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
    		</asp:TemplateColumn>
    	</Columns>
    	<PagerStyle Height="20px" HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
    .....
    Les 2 colonnes en question sont Entreprise et Adresse. Elles contiennent respectivement les controls TextBox2 et TextBox1, que je voudrais rendre "non-editable" selon certains critères....

    J'essaye de selectionner mon controle comme ça mais sans résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DG_CtrlAdresse.FindControl("TextBox2").EnableViewState = False
    J'ai cru lire que le Datagrid "changeait" les ID des controles à sa manière, et qu'on ne peut donc pas selectionner le control par son Id ...Et je ne vois pas comment faire alors...
    Je pense qu'il faut partir d'un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DG_CtrlAdresse.EditItemIndex = e.Item.ItemIndex
    mais je vois pas comment aller + loin...
    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Par défaut
    dans l evenement onupdating de ta grille
    tu recuperes ton textbox et tu fais .enable = false

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Par défaut
    en c# ca donnerai le code ci dessous


    Textbox t = (Textbox )DG_CtrlAdresse.FindControl("TextBox2");
    t.enable = false;

    fais l equivalent en VB
    je ne me rappelle plus comment on cast en vb

  4. #4
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut
    Je te remercie de tes réponses
    Malheureusement, je pense pas que ça marche ici car le problème c'est qu'il ne reconnait pas l'Id "TextBox2" car il "crée" un autre Id (propre à lui)...
    Je ne peux pas utiliser l'Id pour récuperer mon contrôle...Je dois passer la sélection du contrôle contenu dans telle cellule...Et c'est ça que je n'arrive pas à faire...
    (Je te remercie quand même de ton aide, j'ai essayé le Cast mais il reconnait pas le contrôle...)

  5. #5
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut
    Voilà ce que j 'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim t As TextBox
    t = CType(DG_CtrlAdresse.Items(e.Item.ItemIndex).FindControl("TextBox2"), TextBox)
    t.Enabled = False
    Et il me met le message d'erreur suivant :
    "La référence d'objet n'est pas définie à une instance d'un objet."

  6. #6
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut
    Bon, comme je n'ai toujours pas trouvé la réponse j'ai fait une bidouille (Classique )
    J'ai rajouté une colonne BoundColumn devant chacune de mes 2 TemplateColumn avec les mêmes champs...Et je gère mon problème en affichant soit la BoundColumn soit la TemplateColumn pour l'entreprise ou l'adresse selon que le champ soit "modifiable" ou non...
    Je laisse quand même le post ouvert si ça peut aider d'autres personnes...

Discussions similaires

  1. Valoriser une textBox dans le footer d'un datagrid
    Par sebpern dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/02/2010, 12h31
  2. Erreur dans mon controle textbox
    Par hamdaneabdelkader dans le forum IHM
    Réponses: 1
    Dernier message: 07/01/2009, 13h03
  3. Controler des textBox dans des thread
    Par ramaro dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/04/2008, 14h21
  4. Réponses: 4
    Dernier message: 20/12/2007, 07h58
  5. Un TextBox dans un Control ActiveX fait planter VB6
    Par nicolashenry974 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/07/2006, 14h13

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