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

bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 20 juin 2006 à 11:25
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009 - 21 juin 2006 à 09:35
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

io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 11:46
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
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
20 juin 2006 à 12:19
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
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 12:27
bon appétit

matt 
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
20 juin 2006 à 14:25
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

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 14:38
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

?
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
20 juin 2006 à 14:54
yes, that's right !!!
c'est ce que tu avais compris avant d'écrire les lignes de code ???
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 15:46
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 !!
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
20 juin 2006 à 15:52
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...
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 16:13
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 ?
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 16:15
n'oublie pas de cliquer su ajouter à chaque fois que tu creer un parameter ::  colonne , opérateur , source ....

matt 
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
20 juin 2006 à 17:34
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                                                                 
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 17:43
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
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 17:50
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 !!
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
20 juin 2006 à 17:51
et fais attention de ne pas bosser sur une vue ou autre chose bosse sur la table directement !

matt 
0
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
21 juin 2006 à 09:20
dis moi juste une dernierer chose : a quoi corespond Me
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
21 juin 2006 à 09:34
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 
0
io_ost Messages postés 151 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 6 février 2009
21 juin 2006 à 09:35
dans les 2 blanc y a Me normalement je ne sais pas ce qui c passé

matt 
0
Rejoignez-nous