Modifier la propriété d'une colonne d'un Gridview [Résolu]

Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
15 juin 2012
- - Dernière réponse : arcade205
Messages postés
3
Date d'inscription
vendredi 13 janvier 2006
Dernière intervention
9 juillet 2007
- 9 juil. 2007 à 09:49
Bonjour,

J'ai un gridview qui est le suivant :
<

asp:GridView
ID="GridView_Commande"
runat="server"
DataSourceID="DS_Commande"
DataKeyNames="Id_Consommable,Id_Service,Id_Commande">

<Columns>

<asp:BoundField
DataField="Id_Commande"
HeaderText="Id_Commande"
SortExpression="Id_Commande"

Visible="False"
/>

<asp:BoundField
DataField="Id_Consommable"
HeaderText="Id_Consommable"
InsertVisible="False"

ReadOnly="True"
SortExpression="Id_Consommable"
Visible="False"
/>

<asp:BoundField
DataField="Id_Service"
HeaderText="Id_Service"
InsertVisible="False"

SortExpression="Id_Service"
Visible="False"
/>

<asp:BoundField
DataField="Nom_Conso"
HeaderText="Nom_Conso"
SortExpression="Nom_Conso"
/>

<asp:BoundField
DataField="Ref_Conso"
HeaderText="Ref_Conso"
SortExpression="Ref_Conso"
/>

<asp:BoundField
DataField="Prix"
HeaderText="Prix"
SortExpression="Prix"
/>

<asp:TemplateField
HeaderText="Quantit&#233;"
SortExpression="quantite">

<ItemTemplate>

<asp:TextBox
ID="Quantite"
runat="server"
Width="50px"
Text='<%# Bind("quantite") %>
'></asp:TextBox>

</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>

Je souhaiterais récupérer le Control TEXTBOX pour changer une de ses propriétés dans le page_load. En effet, en fonction du jour du mois il peut être modifiable ou pas : pour expliquer pourquoi je veux absolument le récupérer.
J'ai testé this.gridview_commande.FindControl("Quantite") mais ça ne me retourne rien.
Quelqu'un peut-il m'aider ?

Merci d'avance,
Clem
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
vendredi 13 janvier 2006
Dernière intervention
9 juillet 2007
3
Merci
Bonjour,

Je confirme que hichamveoa raison, il faut bien parcourir son gridview afin de récupérer la contenu de la textbox imbriquée dans notre gridview.
J'avais bien essayé cette syntaxe (qui fonctionne pour un detailview) :
TextBox loDateAchat = ((TextBox)GVHybridProduit.FindControl("TBDateAchat"));
Mais la méthode FindControl() me retournait null :-(

Voici par exemple ce que j'ai du développer pour mon projet :

        protected void GVHybridProduit_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            lblMsgError2.Text = "";
            string lsMsgError = "";
            string lsDateAchat = "";

            for (int i = 0; i < GVHybridProduit.Rows.Count; i++) //Parcourt des lignes du gridview
            {
                if (i == e.RowIndex) //Index de la ligne sélectionnée
                {
                    GridViewRow loRow = GVHybridProduit.Rows[i];
                    TextBox loDateAchat = ((TextBox)loRow.FindControl("TBDateAchat"));                    lsDateAchat loDateAchat null ? "" : loDateAchat.Text;
                }
            }

            if (!m_oBdpService.VerifDate(lsDateAchat))
                lsMsgError = lsMsgError + "Date d'achat
";

            if (lsMsgError != "")
            {
                lblMsgError2.Text = "Les champs suivants sont incorrects :
" + lsMsgError;
                e.Cancel = true;
            }
        }

Voilou voilà

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arcade205
Messages postés
65
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
10 mai 2012
0
Merci
Bjr;
Il faut faire une boucle sur les lignes de votre Grid et pour la colonne ca va pas poser un problem parceque c'est fixé.
Exp;

Controle txt=this.
gridview_commande[index_ligne][index_colonne].
FindControl("Quantite") ;//essayer avec les lignes sans prendre en charge la colonne
 // sinon laissez le code tel quel est

mais avant d'accedes aux proprietes du controle ,il faut le parser en un TextBox.
Bon chance!!!!!!!!!!
Commenter la réponse de hichamveo
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
Dans l'évènement "RowDataBound" de ta GridView, teste le jour du mois et en fonction, tu dois pouvoir rendre ta cellule "ReadOnly" ou pas.











<hr />

@+  
Commenter la réponse de cs_drahcir
Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
15 juin 2012
0
Merci
J'ai toujours la même erreur de NullReferenceException dans l'évènement RowDataBound:

protected

void test(
object sender,
GridViewRowEventArgs e){

if (DateButtoirePassee()){

TextBox tb = (
TextBox)e.Row.FindControl(
"Quantite");tb.Enabled =

false;}

}
Commenter la réponse de adomarle
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
4
0
Merci
C'est parce que e.Row.FindControl("Quantite") te renvoie Nothing (ou null en c# je crois...)



Si tu connais l'index de la colonne où se trouve ta textbox tu dois pouvoir la retrouver...

As-tu essayé ce que t'as dis hichamveo??

<hr />
@+  
Commenter la réponse de cs_drahcir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.