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

adomarle
Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
15 juin 2012
- 22 juin 2007 à 11:05 - 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
arcade205
Messages postés
3
Date d'inscription
vendredi 13 janvier 2006
Dernière intervention
9 juillet 2007
- 9 juil. 2007 à 09:49
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à

Merci arcade205 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de arcade205
hichamveo
Messages postés
65
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
10 mai 2012
- 22 juin 2007 à 11:38
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
cs_drahcir
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
- 22 juin 2007 à 12:30
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
adomarle
Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Dernière intervention
15 juin 2012
- 22 juin 2007 à 14:47
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
cs_drahcir
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Dernière intervention
15 septembre 2009
- 22 juin 2007 à 17:24
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.