Récupérer la sélection d'1 DDL pour faire une insertion dans 1 BDD

Signaler
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006
-
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009
-
salut et merci pour votre aide !!!
j'ai créér un formview avec un isertItemTemplate qui contient :
2 textbox rattachées à une meme table,
1 DDL rattaché a une autre table,
4 DDL rattachés à une autre table encore.
je ne sais pas comment récupérer les items selectionnés dans mes ddl pour les insérer dans ma base.
je vous met le code (C#) que j'ai créé.
je ne vois vraiment pas comment m'y prendre...

<

asp:FormView
ID="inserer"
runat="server"
Visible="False"
DataKeyNames="id_role"
DataSourceID="SqlDataSource1">

<InsertItemTemplate>

<asp:SqlDataSource
ID="sign_SDS"
runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>
"

ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>
"

SelectCommand="SELECT id_fonc_sign, nom_fonc_sign FROM fonc_sign ORDER BY nom_fonc_sign asc"
>

</asp:SqlDataSource>

<asp:SqlDataSource
ID="ss_serv_SDS"
runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>
"

ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>
"

SelectCommand="SELECT id_ss_serv, nom_ss_serv FROM sous_service ORDER BY nom_ss_serv asc"
>

</asp:SqlDataSource>nom du role:

<asp:TextBox
ID="nom_roleTextBox"
runat="server"
Text='<%# Bind("nom_role") %>
'
/>&nbsp;code du role:

<asp:TextBox
ID="code_roleTextBox"
runat="server"
Text='<%# Bind("code_role") %>
'
/>sous-service:

<asp:DropDownList
ID="ss_serv_DDL"
DataSourceID="ss_serv_SDS"
runat="server"
DataTextField="nom_ss_serv"

DataValueField="id_ss_serv"
AutoPostBack="True"
/>&nbsp;

<br
/>signature 1:

<asp:DropDownList
ID="sign1"
DataSourceID="sign_SDS"
runat="server"
DataTextField="nom_fonc_sign"

DataValueField="id_fonc_sign"
/>&nbsp;signature 2:

<asp:DropDownList
ID="sign2"
DataSourceID="sign_SDS"
runat="server"
DataTextField="nom_fonc_sign"

DataValueField="id_fonc_sign"
/><br
/>signature 3:

<asp:DropDownList
ID="sign3"
DataSourceID="sign_SDS"
runat="server"
DataTextField="nom_fonc_sign"

DataValueField="id_fonc_sign"
/>&nbsp;signature 4:

<asp:DropDownList
ID="sign4"
DataSourceID="sign_SDS"
runat="server"
DataTextField="nom_fonc_sign"

DataValueField="id_fonc_sign"
/><br/>
</

InsertItemTemplate>

<ItemTemplate>

<asp:LinkButton
ID="NewButton"
runat="server"
CausesValidation="False"
CommandName="New"

Text="New">

</asp:LinkButton>

</ItemTemplate>

</asp:FormView>

17 réponses

Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

Lors de la création de ta sqldatasource pense à selectionner la clef primaire de ta base de donnée ensuite clique sur le bouton option avancées : et coche génerer les instruction update delete insert. ensuite tu clique sur le bouton where : et tu affecte ta colonne (colonne) à un control(source) id du control : (textbox(comme tu l'as appellé))::::: en fait cela mette en relation ton control textbox et l'insertparameter de ta sqldatasource

ensuite le code de ton bouton
Me.sqldatasource1.insert()

voilà en très très gros !!! une methode simple et assistée

avec un code (en code behind) du genre :

Protected

Sub Button2_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles Button2.Click

Dim str
As
Stringstr =

Me.DropDownList1.SelectedValue

Me.SqlDataSource1.InsertParameters(
"nom").DefaultValue = str

Me.SqlDataSource1.Insert()

End
Sub
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

merci, mais je crois que j'ai pas tout compris !
je travaille en c# c'est un peu different !
je vais aller manger et je reprend ca apres
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

bon appétit

matt 
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

Je ne suis pas certaine de m'etre bien exprimée
Un apercu de la vue de l'appli (j'espere que vous avez beaucoup d'imagination) :
nom(TBox à remplir)      code(TBox à remplir)      
sous-service(DDL dans table ss_serv)
signature1(DDL dans table signature)      signature2(DDL dans table signature)...
insert      cancel

a partir de ca, je remplis la table role qui a comme attributs : id_role, code_role, nom_role, sign1, sign2,...
en fait je ne comprend pas mette en relation ton control textbox et l'insertparameter de ta sqldatasource
mettre en relation ton control textbox et l'insertparameter de ta sqldatasource.
ici, je travaille avec 3 SqlDataSource differentes :
1 pour le nom et le code
1 pour la DDL sous_service
1 pour les DDL signature

 
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

et tu veux inserer dans la table role  :

-ce que tu as taper dans tes tbox : nom, code
-la selection de tes dropdownlist (DDL on est bien d'accord ????) : sous_service,signature

?
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

yes, that's right !!!
c'est ce que tu avais compris avant d'écrire les lignes de code ???
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

Je le fais en cinq minute en vb.net mais quand je regarde en c# je vois pas comment faire !! désolé je réexplique en vb si tu veux !!
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

si c'est pas trop te demander je le veux bien en vb.net avec quelques explications
la j'ai réussi a attacher 2 DDL pour afficher des valeurs dans la 2eme DDL en fonction de la valeur sélectionnée dans la 1ere DDL (c'est pour une autre page).
je pense etre sur la bonne voix !
alors si tu peux m'éclaircir un peu je t'en serait tres reconnaissante...
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

Bon tout ce fait lors de la création de ta sqldatasource pour ta table de destination (qui va enregistrer  : tes sélection de ddl et ce que tu as taper dans les textbox )

pense à bien selectionner la clef primaire de ta table
ensuite :: bouton option avancée et la tu coche generer les instruction update, delete, update. tu fais ok...
puis :: le bouton where  et la dans colonne tu selectionne la colonne de destination, opérateur : =  ,  source tu peu mettre none.

ok suivant ....

ensuite tu met un bouton sur ta page  tu double clique dessus tu arrive à son code et tu met un truc comme ça remanier à ta convenance ::
Protected

Sub Button1_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Me.SqlDataSource2.InsertParameters(
"nom").DefaultValue =
Me.DropDownList1.SelectedValue

Me.SqlDataSource2.InsertParameters(
"prenom").DefaultValue =
Me.DropDownList2.SelectedValue

Me.SqlDataSource2.InsertParameters(
"nombanque").DefaultValue =
Me.DropDownList3.SelectedValue

Me.SqlDataSource2.InsertParameters(
"tb1").DefaultValue =
Me.TextBox1.Text

Me.SqlDataSource2.InsertParameters(
"tb2").DefaultValue =
Me.TextBox2.Text

Me.SqlDataSource2.Insert()

End
SubCes insertparameters sont présent dans le code asp de ta page dans la balise <

asp:SqlDataSource ....

 par le code si dessus  tu leurs attribuent une valeur et ensuite  lancer l'insert

 il te faut une page en VB et je te conseille le codebehind (placer le code dans un fichier distinct)
ça ira ?
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

n'oublie pas de cliquer su ajouter à chaque fois que tu creer un parameter ::  colonne , opérateur , source ....

matt 
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

en fait tous les insertParameters etaient deja créés.
ce qui se passe maintenant c'est que l'insertion ne se fait pas.
mais aucune erreur n'est générée. je vais essayer de trouver le reponse dans le theme sql, je trouverai peut etre.                                                                                       en tous les cas merci pour ta patience.      
ciaociao                                                                 
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

pour t'aider le code source de la page aspx :: puis le code du bouton

<%

@
Page
Language="VB"
AutoEventWireup="false"
CodeFile="Default3.aspx.vb"
Inherits="Default3" %>
<!

DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><

htmlxmlns="http://www.w3.org/1999/xhtml"><

headrunat="server">

<title>Untitled Page
</title></

head><

body>

<form
id="form1"
runat="server">

<div>

<asp:TextBox
ID="TextBox1"
runat="server"></asp:TextBox>

<asp:TextBox
ID="TextBox2"
runat="server"></asp:TextBox><br
/>

<asp:DropDownList
ID="DropDownList1"
runat="server"
DataSourceID="SqlDataSource1"

DataTextField="nom"
DataValueField="nom">

</asp:DropDownList>&nbsp;

<asp:DropDownList
ID="DropDownList2"
runat="server"
DataSourceID="SqlDataSource1"

DataTextField="prenom"
DataValueField="prenom">

</asp:DropDownList>

<asp:DropDownList
ID="DropDownList3"
runat="server"
DataSourceID="SqlDataSource1"

DataTextField="dn"
DataValueField="dn">

</asp:DropDownList>

<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:ClientsConnectionString %>
"

SelectCommand="SELECT [nom], [prenom], [nombanque] FROM [clients]"></asp:SqlDataSource>

</div>

<asp:SqlDataSource
ID="SqlDataSource2"
runat="server"
ConnectionString="<%$ ConnectionStrings:inboxConnectionString %>
"

 
InsertCommand="INSERT INTO [test] ([nom], [prenom], [nombanque], [tb1], [tb2]) VALUES (@nom, @prenom, @nombanque, @tb1, @tb2)">

<InsertParameters>

<asp:Parameter
Name="nom"
Type="String"
/>

<asp:Parameter
Name="prenom"
Type="String"
/>

<asp:Parameter
Name="nombanque"
Type="String"
/>

<asp:Parameter
Name="tb1"
Type="String"
/>

<asp:Parameter
Name="tb2"
Type="String"
/>

</InsertParameters>

</asp:SqlDataSource>

<asp:Button
ID="Button1"
runat="server"
Text="Button"
/>

</form></

body></

html>

code du click sur le bouton :

Protected
Sub Button1_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Me.SqlDataSource2.InsertParameters(
"nom").DefaultValue =
Me.DropDownList1.SelectedValue

Me.SqlDataSource2.InsertParameters(
"prenom").DefaultValue =
Me.DropDownList2.SelectedValue

Me.SqlDataSource2.InsertParameters(
"nombanque").DefaultValue =
Me.DropDownList3.SelectedValue

Me.SqlDataSource2.InsertParameters(
"tb1").DefaultValue =
Me.TextBox1.Text

Me.SqlDataSource2.InsertParameters(
"tb2").DefaultValue =
Me.TextBox2.Text

Me.SqlDataSource2.Insert()

End
Sub
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

fais ça en vb :



Try








Me
.SqlDataSource2.Insert()


Catch
ex

As
ExceptionResponse.Write(ex.Message)


End



Try

cela ecrira sur ta page l'erreur rencontrer !!
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

et fais attention de ne pas bosser sur une vue ou autre chose bosse sur la table directement !

matt 
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

dis moi juste une dernierer chose : a quoi corespond Me
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

The Me keyword behaves like either an object variable or a structure variable referring to the current instance. Using Me is particularly useful for passing information about the currently executing instance of a class or structure to a procedure in another class, structure, or module. For example, suppose you have the following procedure in a module.

et desolé je ne suis pas trop fort en trad (mais je comprend bien !!) ça marche pas en C# c'est que pour le VB

matt 
Messages postés
151
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
6 février 2009

dans les 2 blanc y a Me normalement je ne sais pas ce qui c passé

matt