2010-11-21 4 views
0

J'ai un dropdownlist qui montre une liste des pays de ma base de donnéesObtenir la valeur sélectionnée de dropdownlist en asp.net

public void ShowCountries() 
    { 
     OdbcConnection conn; 
     conn = new OdbcConnection(ConfigurationManager.ConnectionStrings["jConnString"].ConnectionString); 
     conn.Open(); 
     string sql = "SELECT iso,printable_name FROM country"; 

     OdbcCommand cmd = new OdbcCommand(sql, conn); 


     try 
     { 
      //ddlCountry.DataSourceID = "country"; 
      ddlCountry.DataSource = cmd.ExecuteReader(); 
      ddlCountry.DataTextField = "printable_name"; 
      ddlCountry.DataValueField = "iso"; 
      ddlCountry.DataBind(); 
     } 
     catch (Exception ex) 
     { 
      Check.Text = "3" + ex.Message; 
     } 
     finally 
     { 
      ddlCountry.Dispose(); 
      conn.Close(); 
      conn.Dispose(); 
     } 

    } 

dans le fichier ASPX c'est la manière dont j'appelle cette liste databounded

<asp:DropDownList ID="ddlCountry" runat="server" 
DataTextField="printable_name" 
DataValueField="iso"> 
    </asp:DropDownList> 

Il montre la liste mais si je veux sélectionner une option autre que la première, il insère toujours la valeur de la première option et jamais celle sélectionnée, qu'est-ce que je fais mal?

+0

Comment sélectionnez-vous une option dans votre code? –

Répondre

0

Il me semble que la source de données est (re-) liée au contrôle avant d'accéder à la valeur sélectionnée, donc la valeur sélectionnée est toujours la première valeur dans la source de données.

Où et quand ShowCountries est appelée? A une supposition, je dirais que vous manquez un chèque de IsPostback dans Page_Load

if (!IsPostback) { 
    // bind the datasource here, when the page initially loads 
    ShowCountries(); 
} 

Aussi, je ne pense pas que vous voulez appeler Dispose() sur ddlCountry dans le bloc finally.

Questions connexes