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

Signaler
Messages postés
4
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
Messages postés
4
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juillet 2005
-
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

5 réponses

Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
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
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
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
Messages postés
4
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juillet 2005

merci :)
Messages postés
4
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juillet 2005

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 :/
Messages postés
4
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juillet 2005

nikel merci bien :)