Postback: set combobox.SelectedItem d'un UserControl depuis parent
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:
Code:
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> |
WebForm1.aspx.cs
Code:
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:
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
Code:
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;
}
} |
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é...
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!!!