Recupérer valeur/index d'un élément sélectionné dans un <select> HTML en C# [Résolu]

cs_Smoofy 4 Messages postés mardi 25 janvier 2005Date d'inscription 28 juillet 2005 Dernière intervention - 26 juil. 2005 à 17:55 - Dernière réponse : cs_Smoofy 4 Messages postés mardi 25 janvier 2005Date d'inscription 28 juillet 2005 Dernière intervention
- 28 juil. 2005 à 12:03
Voilà mon code HTML (dans mapage.aspx). La liste se créé correctement sans problème. J'ai bien renseigné propriétés id et name.

<SELECT id="lieu_accident" name="lieu_accident">
<OPTION value="" selected>Choisir...</OPTION>
<%
//rempli liste
System.Data.Odbc.OdbcConnection connexion new System.Data.Odbc.OdbcConnection((string)Application.Get("CS")); connexion.Open(); System.Data.Odbc.OdbcCommand oCmd new System.Data.Odbc.OdbcCommand(); oCmd.Connection = connexion; oCmd.CommandText = "select * from LIEU_ACCIDENTS"; System.Data.Odbc.OdbcDataReader oDRlieu = oCmd.ExecuteReader();
while (oDRlieu.Read()) Response.Write("<option value='" + oDRlieu.GetInt32(0) + "'>" + oDRlieu.GetString(1) + "</option>");
oDRlieu.Close();
%>
</SELECT>

Et voilà comment je tente de récupérer la valeur de l'élement sélectionné (dans mapage.aspx.cs) :
sql = sql + Request.Form["lieu_accident"]

Mais je n'arrive à récupérer aucune valeur ! :( QQ'un aurait une solution ?
Merci de votre aide et merci de m'avoir lu
Afficher la suite 

5 réponses

Répondre au sujet
cabbry 100 Messages postés mercredi 8 janvier 2003Date d'inscription 27 janvier 2006 Dernière intervention - 27 juil. 2005 à 08:42
+3
Utile
A ta place je ne ferais pas comme ça...



Dans ta page aspx, tu mets uniquement:







le name on s'en fout, heureusement que jesusonline n'a pas vu ton message, il t'aurait tiré les oreilles !



Ensuite dans ta page cs, pour faire propre:



private void Page_Load(object sender, System.EventArgs e)

{

if (! Page.IsPostBack )

{

chargerDdl();



Dans le page load tu appelles la fonction chargerDdl qui va te remplir ta ddl avec ta requete.



Ensuite pour recup la valeur (sur l'évenement onSelectedItemChanged par exemple)



DropDownList ddl = (DropDownList) sender;

int id = Convert.ToInt32(ddl.SelectedItem.Value);





Cab
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cabbry
cabbry 100 Messages postés mercredi 8 janvier 2003Date d'inscription 27 janvier 2006 Dernière intervention - 27 juil. 2005 à 11:50
+3
Utile
Ta deux solution soit tu la rempli tout seul soit tu le laisses faire:



tu fais ta requete et juste apres ton OdbcDataReader oDRsal = oCmd.ExecuteReader(); tu mets:



do

{

while (dataReader.Read())

{


ddl_sal.Items.Insert(i, new ListItem( dataReader.GetString(1),
Convert.ToString( i ) );

i++;

}

}

while (dataReader.NextResult());



Sachant que le Convert.ToString( i ) tu peux mettre a la place un champ de ta requete:

Convert.ToString(dataReader.GetInt32(0)) )



sinon si tu veux pas faire comme ça, tu peux essayer toujours apres ton datareader:



ddl_sal.DataSource = dataReader;

ddl_sal.DataTextField = "libelle";

ddl_sal.DataValueField = " le_nom_dun_champs_de_ta_requete ";

ddl_sal.DataBind();



Ca devrait marcher...



Cab
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cabbry
cs_Smoofy 4 Messages postés mardi 25 janvier 2005Date d'inscription 28 juillet 2005 Dernière intervention - 27 juil. 2005 à 10:20
0
Utile
merci :)
Commenter la réponse de cs_Smoofy
cs_Smoofy 4 Messages postés mardi 25 janvier 2005Date d'inscription 28 juillet 2005 Dernière intervention - 27 juil. 2005 à 10:55
0
Utile
en fait je pensais pouvoir y arriver, mais comment construit-on la droplist?

void ChargerListes()
{
OdbcConnection connexion = new OdbcConnection((string)Application.Get("CS"));
connexion.Open();
OdbcCommand oCmd = new OdbcCommand();
oCmd.Connection = connexion;

//ddl_sal
oCmd.CommandText= "select * from SALARIES;";
OdbcDataReader oDRsal = oCmd.ExecuteReader();
while (oDRsal.Read())
{
ddl_sal.Items.Add(oDRsal.GetString(1));
}

connexion.Close();
}

moi g fait ça mais ça marche pa :/
Commenter la réponse de cs_Smoofy
cs_Smoofy 4 Messages postés mardi 25 janvier 2005Date d'inscription 28 juillet 2005 Dernière intervention - 28 juil. 2005 à 12:03
0
Utile
nikel merci bien :)
Commenter la réponse de cs_Smoofy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.