IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Postback: set combobox.SelectedItem d'un UserControl depuis parent


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Points : 60
    Points
    60
    Par défaut 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 : 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>
    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
     
     
    //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

    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;
                }
            }
    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!!!

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 75
    Points : 60
    Points
    60
    Par défaut
    J'ai finalement trouvé la solution.

    L'initialisation des valeurs des controls du UserControl doit se faire dans la méthode Page_Init de WebForm1.aspx.cs et non pas dans Page_Load.

    c'est bête et pas logique, mais il fallait y penser...

    ce qui nous donnerait donc...

    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
    protected void Page_Init(object sender, EventArgs e)
            {
     
                //Load
                WebUserControl1 userControl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
     
     
     
     
                if (!IsPostBack)
                {
                    testcombo.SelectedIndex = 1;
                    userControl.SelectedIndex = 0;
                    userControl.SelectedIndexListBox = 0;
                }
                else
                {
                    testcombo.SelectedIndex = 2;
                    userControl.SelectedIndex = 2;
     
                    userControl.DisplayText = "YEAH";
                }
     
                panelFilters.Controls.Add(userControl);
     
     
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher un UserControl depuis XAML
    Par july4474 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 30/11/2010, 18h01
  2. Problème combobox SelectedItem
    Par Nadiya dans le forum Windows Forms
    Réponses: 7
    Dernier message: 03/09/2010, 14h58
  3. Définir un style dans un UserControl, depuis une application.
    Par orobin dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 14/03/2008, 23h04
  4. Appel de fonction d'un UserControl depuis une Form
    Par belzeluc dans le forum Windows Forms
    Réponses: 7
    Dernier message: 14/09/2007, 16h42
  5. MAJ Combobox d'une FORMS(1) depuis une autre FORMS(2)
    Par stephane77fr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/08/2007, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo