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

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

5 réponses

Répondre au sujet
arcade205 3 Messages postés vendredi 13 janvier 2006Date d'inscription 9 juillet 2007 Dernière intervention - 9 juil. 2007 à 09:49
+3
Utile
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à
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de arcade205
hichamveo 65 Messages postés vendredi 3 novembre 2000Date d'inscription 10 mai 2012 Dernière intervention - 22 juin 2007 à 11:38
0
Utile
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 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 22 juin 2007 à 12:30
0
Utile
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 41 Messages postés jeudi 18 septembre 2003Date d'inscription 15 juin 2012 Dernière intervention - 22 juin 2007 à 14:47
0
Utile
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 745 Messages postés mardi 30 novembre 2004Date d'inscription 15 septembre 2009 Dernière intervention - 22 juin 2007 à 17:24
0
Utile
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.