asp.net DropDownList在ASPNET 4.5中不起作用

Abd*_*man 2 c# forms asp.net class web

下拉列表:

protected void Page_Load(object sender, EventArgs e)
{
    try
    {

        string sqlCoursesList = "SELECT sno,subject_lbl FROM courses WHERE sub_status = 1";

        this.course_sno.DataSource = gm.dataTable(sqlCoursesList);
        this.course_sno.DataTextField = "subject_lbl";
        this.course_sno.DataValueField = "sno";
        this.course_sno.DataBind();
    }
    catch (Exception exc) {
        gm.catchError(exc);
    }

}
Run Code Online (Sandbox Code Playgroud)

我班上的方法

public DataTable dataTable(string sql) {
    try {
        connect();
        dt = new DataTable();
        oda = new MySqlDataAdapter(sql, con);
        oda.Fill(dt);
    }
    catch (Exception exc) {
        catchError(exc);
    }
    finally {
        try {
            closeCon();
        }
        catch (Exception excf) {
            catchError(excf);
        }
    }
    return dt;
}
Run Code Online (Sandbox Code Playgroud)

按下代码按下:

protected void btnSearch_Click(object sender, EventArgs e)
{
    try
    {
        string year = this.adm_year.Text;
        string course_sno = this.course_sno.SelectedIndex.ToString();
        //this.searchTxt.Text = "Year: "+year+" Course Sno : "+course_sno;
        if (year.Equals("") || course_sno.Equals(""))
        {
            this.searchTxt.Text = gm.errorMsg("Error", "Session year and Course Must be selected in the fields", "../../images/error.png");
        }
        else
        {
            string sqlList = "SELECT sno,std_sno,opt_sno,course_sno,chosen_faculty,date_application,is_active " +
                             "FROM apply_for_course " +
                             "WHERE course_sno = '" + course_sno + "' AND " +
                             "YEAR(date_application) = '" + year + "'";
            if (gm.search(sqlList))
            {
                mdr = gm.getRecordSet(sqlList).ExecuteReader();
                if (mdr.HasRows)

                  }
........

}
Run Code Online (Sandbox Code Playgroud)

现在,问题是,当我更改下拉列表选择并按下提交按钮时,它只获得第一个索引:

 string course_sno = this.course_sno.SelectedIndex.ToString();
Run Code Online (Sandbox Code Playgroud)

什么我做错了?

Kar*_*son 8

您在每个页面加载时绑定/重新绑定下拉列表,这会将下拉列表的选定索引重置为列表中的第一个项目.只在第一次绑定下​​拉列表,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        try
        {
            string sqlCoursesList = "SELECT sno,subject_lbl FROM courses WHERE sub_status = 1";

            this.course_sno.DataSource = gm.dataTable(sqlCoursesList);
            this.course_sno.DataTextField = "subject_lbl";
            this.course_sno.DataValueField = "sno";
            this.course_sno.DataBind();
        }
        catch (Exception exc) {
            gm.catchError(exc);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)