Bonjour,
comme le titre l'indique si bien, j'aimerais lors d'un PostBack setter le SelectedItem d'une combobox d'un UserControl (ascx) depuis ma main Page(aspx).
J'ai lu beaucoup de choses sur le net, j'arrive à faire cela pour un Label uniquement, mais j'ai essayé EXACTEMENT la même chose pour ListBox et AspxCombobox(DevExpress) et là, néant.
L'idée, c'est que lors d'un Postback après avoir sélectionné un item dans la combobox cboUserConfiguration de WebForm1.aspx, j'update le selectedItem de la Combobox, mais de mon UserControl.
en bref, voici mon code "demo":
WebForm1.aspx:
WebForm1.aspx.cs
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 <dx:ASPxComboBox ID="cboUserConfiguration" ClientInstanceName="cboUserConfiguration" runat="server" AutoPostBack="True" SelectedIndex="0"> <Items> <dx:ListEditItem Text="config1" Value="config1" /> <dx:ListEditItem Text="config2" Value="config2" /> <dx:ListEditItem Text="config3" Value="config3" /> </Items> </dx:ASPxComboBox> <dx:ASPxComboBox ID="testcombo" ClientInstanceName="testcombo" runat="server"> <Items> <dx:ListEditItem Text="test1" Value="test1" /> <dx:ListEditItem Text="test2" Value="test2" /> <dx:ListEditItem Text="test3" Value="test3" /> </Items> </dx:ASPxComboBox> <asp:Label ID="Label1" runat="server" Text="FROM USERCONTROL"></asp:Label> <dx:ASPxPanel ID="panelFilters" ClientInstanceName="panelFilters" runat="server"> <PanelCollection> <dx:PanelContent ID="panelFiltersContent" runat="server"> </dx:PanelContent> </PanelCollection> </dx:ASPxPanel>
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 //Load WebUserControl1 userControl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx"); panelFilters.Controls.Add(userControl); if (!IsPostBack) { testcombo.SelectedIndex = 1; userControl.SelectedIndex = "test1"; userControl.SelectedIndexListBox = 0; } else { testcombo.SelectedIndex = 2; userControl.SelectedIndex = "test3"; userControl.SelectedIndexListBox = 1; userControl.DisplayText = "YEAH"; }
WebUserControl1.aspx
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 <dx:ASPxComboBox ID="testcombo" ClientInstanceName="testcombo" runat="server" AutoPostBack="True" EnableCallbackMode="True"> <Items> <dx:ListEditItem Text="test1" Value="test1" /> <dx:ListEditItem Text="test2" Value="test2" /> <dx:ListEditItem Text="test3" Value="test3" /> </Items> </dx:ASPxComboBox> <asp:ListBox ID="ListBox1" runat="server"> <asp:ListItem>test1</asp:ListItem> <asp:ListItem>test2</asp:ListItem> <asp:ListItem>test3</asp:ListItem> </asp:ListBox> <dx:ASPxLabel ID="label" Text="ttttt" runat="server"> </dx:ASPxLabel>
WebUserControl1.aspx.cs
ce qui est marrant, c'est que mon label est bien updaté depuis le WebForm1.aspx avec la méthode DisplayText alors que ma listBox et ma AspXComboBox, ben, sur un PostBack, y'a pas moyen d'updaté...
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 public string SelectedIndex { set { foreach (ListEditItem item in testcombo.Items) { if (item.Value.ToString() == value) { item.Selected = true; } } } } public string DisplayText { set { label.Text = value; } } public int SelectedIndexListBox { set { ListBox1.SelectedIndex = value; } }
Est-ce que je fais quelquechose de faux? Il me semble pas que ce soit si compliqué que ça quand même...
Merci beaucoup pour vos réponses, parce que là, je sèche!!!
Partager