Bonjour à tous,
Voilà j'ai un problème un peu au-dessus de mes compétences.

Dans l'app que je développe, j'ai un module de gestion du courrier et un module de gestion des contacts.
Dans la gestion des courriers, je voudrais pouvoir insérer un contact référencé dans ma liste contact, et un contact non référencé.

Voici comment je procède :
J'ai une table Courrier_tbl dans laquelle j'enregistre tous les courriers.
J'ai une DropDownList qui me renvoie la liste des contacts enregistrés dans ma table contact. J'ai également une TextBox qui me sert à enregistrer un courrier pour un contact qui n'est pas dans la liste. Ces deux contrôles (DropDownList et TextBox) sont Bindés au même champ de la table Courrier_tbl.

Je voudrais que lorsque la DropDownList a une certaine valeur (par exple : "Inconnu"), que le nom du contact à enregistrer pour ce courrier soit pris dans la TextBox.

Voici ce que j'ai fais :

page aspx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<td>Destinataire :<br />
       <asp:DropDownList ID="ddlDestinataire" runat="server" Text='<%# Bind("destinataire") %>'
       DataSourceID="dsContact" DataTextField="nom" DataValueField="nom" Width="153px">
       </asp:DropDownList>
       Ou
       <br />
       <asp:TextBox ID="txtDestinataire" runat="server" Text='<%# Bind("destinataire") %>'>
       </asp:TextBox>        
</td>
Notez que les deux contrôles sont Bindés au même champ : destinataire.

Code VB.Net
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
 
    Protected Sub ChoixDest(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim ContactReg As DropDownList = CType(fvwCourrierDep.Controls.Item(0).Controls(1).Controls.Item(0).Controls.Item(3), DropDownList)
        Dim ContactInc As TextBox = CType(fvwCourrierDep.Controls.Item(0).Controls(1).Controls.Item(0).Controls.Item(5), TextBox)
        If ContactReg.Text = "(Inconnu)" Then
            ContactReg.ClearSelection()
            ContactReg.Enabled = False
        Else
            ContactInc.Enabled = False
            ContactReg.Enabled = True
            ContactReg.DataSourceID = "dscontact"
            ContactReg.DataTextField = "nom"
            ContactReg.DataValueField = "numContact"
        End If
    End Sub
Protected Sub ChoixDest est déclenché sur clic sur le bouton Inser du FormView qui contient la DropDownList et la TextBox.

ContactReg représente la DropDownList pour les contacts enregistrés et ContactInc, la TextBox pour les contacts inconnus.

En procédant comme ceci, l'enregistrement se fait avec la valeur du contrôle que je déclare en dernier dans la balise <InserItemTemplate> du Formview qui les contient, en l'occurence ici la TextBox, même si je choisis une valeur autre que "(Inconnu)" dans la DropDownList.

A votre avis comment puis-je m'en sortir ?