[asp.net] récupérer l'id d'un control

Résolu/Fermé
ordiminnie Messages postés 219 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 5 juillet 2016 - 4 oct. 2008 à 13:44
 Rollin'babe !! - 6 oct. 2008 à 15:45
Bonjour,

je vais essayer de résumer mon problème de façon claire mais c'est pas facile avec l'asp.net parce que c'est beaucoup d'interface et pas tellement du code... heureusement le sujet n'est pas trop compliqué ! Je précise que je débute...!

voila j'ai une dropdownlist2 de forme (de bijoux) et une autre (dropdownlist3) de matière (de bijoux_pour des piercings); et je voudrais que quand on choisit 'anneaux' dans les formes, on ait plus que les matières qui correspondent aux bijoux en forme d'anneaux qui ont été enregistré dans la db.
Exemple : si j'ai enregistré un anneau en or, un autre en titane et un autre en acier, je ne veux que ces trois matières dans la dropdownlist et pas l'ensemble des matières.

Dans ma DB, j'ai une table matière et une table forme en relation plusieurs à plusieurs via la table des produits.

J'ai donc fait une requête specifique dans le table adapter de la table matière du dataset, afin de faire un select sur base d'un paramètre @MyId
REQUETE :
SELECT DISTINCT tab_categorieMatiere.Id, tab_categorieMatiere.LibelleMatiere, tab_categorieMatiere.Description
FROM tab_produit
INNER JOIN
tab_categorieForme ON (tab_produit.FormeId = tab_categorieForme.Id)
INNER JOIN
tab_categorieMatiere ON (tab_produit.MatiereId = tab_categorieMatiere.Id
WHERE (tab_produit.FormeId = @MyId)

J'ai testé la requête dansle Query Builder pour diiférentes valeur de MyId et ça fonctionne très bien... seulement en fin de course, dans le dropdownlist des matières, je n'ai que les matière pour MyId = 1 quelque soit la valeur selectionné dans la dropdownlist des formes....

J'ai pourtant bien configurer le datasource de la dropdownlist des matières pour qu'il prenne en paramètre le control de dropdownlist2 à savoir "MyId = dropdownlist2.selectedvalue"

en code (page .aspx) ça donne
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList2" DefaultValue="4" Name="MyId"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>

J'ai essayé de mettre une valeur par défaut (4) mais ça ne change rien...
J'ai vérifié dans ma db si y'avait pas des produits qui n'ont pas "matiere" ET "forme" mais non...
J'ai mis mes id de formes en auto incrémenté donc pas de soucis de ce coté là...

je ne vois vraiment pas pourquoi à l'affichage je n'ai que les matières pour MyId = 1....

si quelqu'un a une idée, ce serait gentil de m'aider !
Désolée pour la tartine, je vois pas comment faire plus court...

3 réponses

Rollin'babe !!
4 oct. 2008 à 15:29
Bjour,

Peux tu nous donner le code intégral de ton .aspx stp ?.

Merci.
0
Rollin'babe !!
4 oct. 2008 à 15:37
Re,

(En attendant ta réponse).

En C#, la structure de ton .aspx doit être de ce type (un exemple) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<form runat="server">

<p><asp:dropdownlist
id="DropDownList2"
runat="server"
autopostback="True">
<asp:listitem selected>Sales Representative</asp:listitem>
<asp:listitem>Sales Manager</asp:listitem>
<asp:listitem>Vice President, Sales</asp:listitem>
</asp:dropdownlist></p>

<asp:sqldatasource
id="SqlDataSource1"
runat="server"
connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">
<selectparameters>
<asp:controlparameter name="Title" controlid="DropDownList2" propertyname="SelectedValue"/>
</selectparameters>
</asp:sqldatasource>
</form>
</body>
</html>
0
ordiminnie Messages postés 219 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 5 juillet 2016 17
6 oct. 2008 à 13:41
Bonjour Rollin'babe

voilà la partie de mon code aspx :

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:Label ID="LBrechForme" runat="server" Text="Choisissez la forme"></asp:Label>
<asp:DropDownList ID="DDLformeGV" runat="server" DataSourceID="ODSforme"
DataTextField="LibelleForme" DataValueField="Id">
</asp:DropDownList>

    Choisissez la matiere :
<asp:DropDownList ID="DDLmat" runat="server" DataSourceID="ODSmatiereById"
DataTextField="LibelleMatiere" DataValueField="Id">
</asp:DropDownList>

<asp:ObjectDataSource ID="ODSmatiereById" runat="server" DeleteMethod="Delete"
InsertMethod="Insert" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetDataByIdForme"
TypeName="DataSet1TableAdapters.tab_categorieMatiereTableAdapter"
UpdateMethod="Update">

<DeleteParameters>
<asp:Parameter Name="Original_Id" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="LibelleMatiere" Type="String" />
<asp:Parameter Name="Description" Type="String" />
<asp:Parameter Name="Original_Id" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="DDLformeGV" DefaultValue="" Name="MyId"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="LibelleMatiere" Type="String" />
<asp:Parameter Name="Description" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>

(...)
</asp:Content>

je n'ai pas de <p>...est-ce que ça pose un problème ?

et j'ai aussi jeter un oeil au code html et j'ai découvert qqch qui est peut être la solution mais je ne sais pas comment changer ça ! en fait, quelque soit la forme qui est sélectionnée dans mon premier dropdownlist, c'est toujours le premier qui est noté comme "selected" tel que :

<span id="ctl00_ContentPlaceHolder1_LBrechForme">Choisissez la forme</span>
<select name="ctl00$ContentPlaceHolder1$DDLformeGV" id="ctl00_ContentPlaceHolder1_DDLformeGV">
<option selected="selected" value="1">Barbell</option>
<option value="2">Labret</option>
<option value="3">Banane</option>
<option value="4">Bille</option>
<option value="5">Anneaux</option>

</select>

coment puis-je changer ça ? je vais aller chipoter vers les propriétés du composant mais si si tu as une idée..n'hésite pas !

merci
-1
ordiminnie Messages postés 219 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 5 juillet 2016 17
6 oct. 2008 à 13:47
YYYYYYYYEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSS !!!

j'ai fini par trouver : j'avais pas coché la case "enable autopostsback" .... que je ne connaissais pas d'ailleurs !! et voilà ça fonctionne très bien !

merci de ton aide, ça m'a mise sur une piste nouvelle pcq j'étais un peu coincée !!
maintenant je peux passer à un nouveau problème.

merci et bonne journée!
-1
Rollin'babe !!
6 oct. 2008 à 15:45
Re,

A l'avenir, utilise toujours cette option sur tes champs de saisie pour assurer un transfert des données utilisateur vers le serveur.
Je m'en doutais un peu au vu de tes symptômes.

Cordialement.
0