Bonjour,
Comment faire un Label éditable à l'exécution ?
Merci.
Bonjour,
Comment faire un Label éditable à l'exécution ?
Merci.
bonjour
Tu peux expliquer votre besoin !!! la question et très vague
J'ai une page affichant des données à imprimer, mais avant de l'imprimer l'utilisateur peut vouloir de saisir des observations dans une zone de la page.
Je veux ajouter un Label dans lequel il peut saisir ses observations.
Je ne veux pas faire un textbox, parce que les observations peuvent être dans plusieurs lignes et la barre de défilement ne doivent pas apparaître.
Est-ce la question est claire ou bien je dois expliquer encore. Merci.
J'ai trouvé le contrôle Ajax: PopupControlExtender qui travaille très bien. Mais dans mon cas il y a un autre problème.
J'ai un gridview affichant des données, et j'ai ajouté une colonne dans lequel j'ai inséré un Label qui doit recevoir les observations de l'utilisateur.
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 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="idproduit" DataSourceID="sdsBLFacturation" Width="100%"> <columns> <asp:BoundField DataField="echelle" HeaderText="Echelle" ReadOnly="True" SortExpression="echelle" /> <asp:BoundField DataField="designation" HeaderText="Désignation" ReadOnly="True" SortExpression="designation" /> <asp:BoundField DataField="qtecommandee" HeaderText="Nombre" ReadOnly="True" SortExpression="qtecommandee" /> <asp:BoundField DataField="prixunitaire" HeaderText="Prix unitaire" ReadOnly="True" SortExpression="prixunitaire" /> <asp:TemplateField HeaderText="Observations"> <ItemTemplate> <asp:Label ID="observations" runat="server" Text="." Width="50px"></asp:Label><br /> <asp:Panel ID="Panel1" runat="server" CssClass="popupControl"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:TextBox runat="server" ID="textObservations" Text=""></asp:TextBox><br /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </ContentTemplate> </asp:UpdatePanel> </asp:Panel> <br /> <ajaxToolkit:PopupControlExtender ID="PopupControlExtender1" runat="server" CommitProperty="value" CommitScript="e.value += ' - SEND A MEETING REQUEST!';" PopupControlID="Panel1" Position="Bottom" TargetControlID="observations"> </ajaxToolkit:PopupControlExtender> </ItemTemplate> </asp:TemplateField> </columns> </asp:GridView>Voilà l'erreur:
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 protected void Button1_Click(object sender, EventArgs e) { Label labelObservations = (Label)GridView1.FindControl("observations"); TextBox textObservations = (TextBox)GridView1.FindControl("textObservations"); if (textObservations.Text.Trim() == "") { labelObservations.Text = "."; } else { labelObservations.Text = textObservations.Text; } }
Il trouve textObservations nullSystem.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
Bonjour,
Le problème ne vient pas du fait que ton TextBox soit situé dans un UpdatePanel (ou un autre contrôle, peu importe). Le FindControl va rechercher dans les contrôles enfants mais pas dans les niveaux du dessous (pas les petits-enfants, etc...).
Donc deux solutions : Tu fais un FindControl sur ton UpdatePanel et avec celui ci tu en fait un second sur ton TextBox.
Ou le mieux : utiliser une fonction FindControl récursive ( pleins d'exemples sur ce forum ou google).
En espérant t'avoir aidé.
Partager