C# 从asp.net中的dropdownlist获取所选值

C# 从asp.net中的dropdownlist获取所选值,c#,drop-down-menu,C#,Drop Down Menu,我有一个下拉列表,显示了我数据库中的国家列表 public void ShowCountries() { OdbcConnection conn; conn = new OdbcConnection(ConfigurationManager.ConnectionStrings["jConnString"].ConnectionString); conn.Open(); string sql = "SELECT iso,pri

我有一个下拉列表,显示了我数据库中的国家列表

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();
        }

    }
在aspx文件中,这就是我如何调用此数据绑定列表的方式

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


它显示列表,但如果我想选择第一个选项以外的选项,它总是插入第一个选项的值,而不是所选的选项,我做错了什么?

在我看来,在访问所选值之前,数据源正在(重新)绑定到控件,因此,选定的值始终是数据源中的第一个值

ShowCountries
何时何地接到电话?我猜您在
页面加载

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

另外,我认为您不想在
finally
块中的
ddlCountry
上调用
Dispose()

如何在代码中选择选项?