Salut à tous !

J'ai un FormView, en insert mode, dans lequel j'ai entre autres une DropDownList remplie dynamiquement lors de son chargement. J'aimerais, lorsque l'utilisateur choisi une valeur dans cette DropDownList, que certains champs du FormView soient automatiquement remplis.

J'ai donc mis AutoPostback = true dans la DropDownList, et me suis enregistré à l'événement OnSelectedIndexChanged pour remplir mes champs selon la valeur sélectionnée.

Le problème, c'est que lorsque le formulaire est soumis par la DropDownList, tout le FormView est remis à zéro ! Je précise que ce formview est situé dans un UpdatePanel (mais à mon humble avis le problème ne vient pas de là).

En fait, le problème surgit dès que je lie mon FormView à une DataSource. Dans le cas simple suivant, ça fonctionne parfaitement :

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
 
<asp:FormView ID="__fv" runat="server"
    DefaultMode="insert"
    >
    <InsertItemTemplate>
        <asp:DropDownList ID="__test" runat="server"
            OnLoad="Test_Load"
            OnSelectedIndexChanged="Test_Changed"
            AutoPostBack="true"
        >
            <asp:ListItem Text="asdf" Value="" />
        </asp:DropDownList>
 
        <asp:TextBox ID="__text" runat="server"
            />
    </InsertItemTemplate>    
</asp:FormView>
Code behind :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
    protected void Test_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            ((DropDownList)this.__fv.FindControl("__test")).Items.Add("a");
            ((DropDownList)this.__fv.FindControl("__test")).Items.Add("b");
            ((DropDownList)this.__fv.FindControl("__test")).Items.Add("c");
            ((DropDownList)this.__fv.FindControl("__test")).Items.Add("d");
            ((DropDownList)this.__fv.FindControl("__test")).Items.Add("e");
        }
    }
 
    protected void Test_Changed(object sender, EventArgs e) {
        ((TextBox)this.__fv.FindControl("__text")).Text = ((DropDownList)this.__fv.FindControl("__test")).SelectedValue;
    }
Mais dès que j'ajoute une DataSource et que je lui lie le FormView, c'est fini !

Quelqu'un a-t-il une idée ? N'hésitez pas si vous voulez plus de précisions, et merci d'avance !