下拉列表:
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); } }
我班上的方法
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; }
按下代码按下:
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) } ........ }
现在,问题是,当我更改下拉列表选择并按下提交按钮时,它只获得第一个索引:
string course_sno = this.course_sno.SelectedIndex.ToString();
什么我做错了?
您在每个页面加载时绑定/重新绑定下拉列表,这会将下拉列表的选定索引重置为列表中的第一个项目.只在第一次绑定下拉列表,如下所示:
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); } } }