Bonjour,
J'ai actuellement le problème suivant.
Je créée un user contrôle contenant une asp:Table vide.
Dans cette table, je dois afficher une liste de messages récupérés en base. En face de chaque message, j'ajoute une checkbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Popups.ascx.cs" Inherits="WebApp.Uc.Popups" %> <div runat="server" id="listMessages" clientidmode="Static"> <asp:Table runat="server" id="tbMessages" clientidmode="Static"> </asp:Table> <asp:Button runat="server" ID="btnCorrection" Text="Marquer comme résolus" OnClick="btnCorrection_Click" /> <button type="button" id="btnMasquer" runat="server" onclick="MasquerMessages('listMessages','btnAfficher',true)" clientidmode="Static">Masquer les alertes</button> </div>
Dans mon Page_Load, je récupère donc ma liste de messages, et pour chaque message, j'ajoute une TableRow à ma table. Dans chaque TableRow, j'ai ajouté 2 cellules (une pour le message et une pour la cb).
Tout se passe bien, ma liste est générée, ma page est magnifique.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44 private void BuildTbl() { int nbLigne = 1; // On parcourt les popups du porteur for (int i = 0; i < porteur.popups.Rows.Count; i++) { DataRow DRpopup = porteur.popups.Rows[i]; // On extrait le code popup de chaque ligne string currentCode = DRpopup["code"].ToString(); // On vérifie si ce code doit être affiché : // - soit parce qu'on souhaite afficher tous les codes // - soit parce qu'il est inclus dans la liste des codes souhaités if (codeList.Count == 0 || CheckCodeInList(currentCode,codeList)) { TableRow tbRow = new TableRow(); TableCell tbCellMessage = new TableCell(); TableCell tbCellCheckbox = new TableCell(); TableCell tbCellId = new TableCell(); Label message = new Label(); CheckBox corrected = new CheckBox(); tbRow.ID = "tbMessagesRow" + nbLigne.ToString(); tbCellId.ID = "IdCell" + nbLigne.ToString(); tbCellMessage.ID = "messageCell" + nbLigne.ToString(); tbCellCheckbox.ID = "checkboxCell" + nbLigne.ToString(); message.Text = DRpopup["libelle"].ToString(); tbCellId.Text = DRpopup["popUpId"].ToString(); //tbCellId.Visible = false; tbCellMessage.Controls.Add(message); tbCellCheckbox.Controls.Add(corrected); tbRow.Cells.Add(tbCellMessage); tbRow.Cells.Add(tbCellCheckbox); tbMessages.Rows.Add(tbRow); nbLigne++; } }
Lors du clic sur un bouton de la page, je dois récupérer les lignes cochées.
Dans la fonction OnClick, je veux donc parcourir ma table, mais là, je constate que tbMessages.Rows.Count = 0.
De même, mes FindControl sur les checkbox renvoient tous null.
Pourriez-vous m'indiquer le problème ?
J'ai déjà pas mal fouillé, et je suis tombé sur ce lien, et ce lien.
Du coup j'ai essayé de modifier le EnableViewState de ma table, sans succès.
Je n'ai pas encore essayé la solution donnée dans l'autre lien, qui pouvait expliquer l'échec du FindControl, mais pas celui du tbMessages.Rows.Count.
Merci d'avance pour votre aide.
Partager