Hello,
J'ai une page avec un UpdatePanel et un Repeater que je dois raffraichîr à chaques fois que les valeurs de ma ListBox sont sont sélectionnées.
le aspx est comme suit :
Code C# : 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 <div class="row "> <div class="col-lg-3"> <label>Sélectionner la ou les langues nécessaire pour le baby-sitting:</label> <asp:ListBox ID="lstBoxLanguages" runat="server" SelectionMode="Multiple" Height="100%" OnSelectedIndexChanged="lstBoxLanguages_SelectedIndexChanged" AutoPostBack="true" > <asp:ListItem Value="0">Allemand</asp:ListItem> <asp:ListItem Value="1">Anglais</asp:ListItem> <asp:ListItem Value="2">Arabe</asp:ListItem> <asp:ListItem Value="3">Espagnol</asp:ListItem> <asp:ListItem Value="4">Français</asp:ListItem> <asp:ListItem Value="5">Italien</asp:ListItem> <asp:ListItem Value="6">Portugais</asp:ListItem> <asp:ListItem Value="7">Serbe</asp:ListItem> </asp:ListBox> </div> <div class="col-lg-1"></div> <div class="col-lg-4 text-center"> </div> <div class="col-lg-2"></div> <div class="col-lg-2"></div> </div> <div class="table-responsive"> <table class="table"> <thead> <tr> <th>Action</th> <th>Nom</th> <th>Prénom</th> </tr> </thead> <tbody> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="BabySitterUpdatePanel" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Repeater ID="BabySitterRepeater" runat="server"> <HeaderTemplate> </HeaderTemplate> <ItemTemplate> <tr> <td><asp:HyperLink ID="ClientID" runat="server" NavigateUrl='<%#String.Format("AllClients.aspx?ID={0}&BabySitter={1}", IDClientSel, Eval("ID")) %>'>Envoyer</asp:HyperLink></td> <td> <asp:Label ID="lblLastName" runat="server" Text='<%# Eval ("LastName") %>'></asp:Label> </td> <td> <asp:Label ID="lblFirstName" runat="server" Text='<%# Eval ("FirstName") %>'></asp:Label> </td> </tr> </ItemTemplate> </asp:Repeater> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="lstBoxLanguages" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </tbody> </table> </div>
Et le code behind :
Code C# : 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 protected void lstBoxLanguages_SelectedIndexChanged(object sender, EventArgs e) { List<int> selectedLanguages = new List<int>(); foreach (ListItem item in lstBoxLanguages.Items) { if (item.Selected) { selectedLanguages.Add(Convert.ToInt32(item.Value)); } } LoadBabySittersFiltered(selectedLanguages); } private void LoadBabySittersFiltered(List<int> IDLanguages) { System.Data.SqlClient.SqlConnection conn = null; TakeCareBaby TCB = null; try { TCB = new TakeCareBaby(); string select = "SELECT " + "FK_Tbl_Baby_Sitter_Id " + "FROM Tbl_Langues_Tbl_Baby_Sitter " + "WHERE "; foreach (int id in IDLanguages) { if (id.Equals(IDLanguages.First())) { select = select + " FK_Tbl_Langues_Id = " + id; } else { select = select + " OR FK_Tbl_Langues_Id = " + id; } } conn = new System.Data.SqlClient.SqlConnection(TCB.GetConnectionString()); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(select, conn); conn.Open(); SqlDataReader myReader = cmd.ExecuteReader(); List<int> BabySitterWithSelectedLanguages = new List<int>(); while (myReader.Read()) { BabySitterWithSelectedLanguages.Add (Convert.ToInt32(myReader[0])); } myReader.Close(); conn.Close(); select = "SELECT " + "Id, " + "Nom, " + "Prenom " + "FROM Tbl_Baby_Sitter WHERE "; if (!BabySitterWithSelectedLanguages.Count.Equals(0)) { foreach (int id in BabySitterWithSelectedLanguages) { if (id.Equals(BabySitterWithSelectedLanguages.First())) { select = select + " Id = " + id; } else { select = select + " OR Id = " + id; } } cmd = new System.Data.SqlClient.SqlCommand(select, conn); conn.Open(); myReader = cmd.ExecuteReader(); BabySitters.Clear(); while (myReader.Read()) { BabySitter MyReaderBabySitter = new BabySitter(); MyReaderBabySitter.ID = Convert.ToInt32(myReader[0]); MyReaderBabySitter.LastName = Convert.ToString(myReader[1]); MyReaderBabySitter.FirstName = Convert.ToString(myReader[2]); BabySitters.Add(MyReaderBabySitter); } BabySitterRepeater.DataSource = BabySitters; BabySitterRepeater.DataBind(); } else { BabySitterRepeater.DataSource = null; BabySitterRepeater.DataBind(); } } catch (System.InvalidOperationException invalOpeExc) { // TODO : add log here throw; } catch (System.Data.SqlClient.SqlException sqlExc) { // TODO : add log here throw; } catch (System.IO.IOException IOExc) { // TODO : add log here throw; } catch (System.InvalidCastException invalCastExc) { // TODO : add log here throw; } finally { if (conn.State.Equals(System.Data.ConnectionState.Open)) conn.Close(); } }
Le problème est que mon Repeater n'est pas du tout mis à jours comme je le voudrais, et les données qui me sont remontées de la base de données sont affichées mais en dehors du repeater entre ma ListBox et le tableau, pour je ne sais quelle raison
Je suis sûr qu'il s'agit d'un truc bête mais ca fait plusieurs heures que je suis dessus et je ne trouve pas comment faire...
Merci pour votre aide
Leelith
Partager