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

Signaler
Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
15 juin 2012
-
Messages postés
3
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
9 juillet 2007
-
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

5 réponses

Messages postés
3
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
9 juillet 2007

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à
Messages postés
64
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
10 mai 2012

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!!!!!!!!!!
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />

@+  
Messages postés
41
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
15 juin 2012

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;}

}
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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 />
@+