2016-04-04 67 views
0

我在asp网页上有一个学期名称的下拉菜单,根据从这个下拉菜单中选择的项目,将出现一个gridview级别和课程。从下拉控件(C#)填充gridview

的问题是根据下拉选择

是网格视图永远不会改变所以,当我选择了一个学期的名字让我们说"Fall",GridView控件显示所有学期" Fall & Spring & Summer"与他们的水平和课程。

这里是我的代码:

public partial class _Default : System.Web.UI.Page 
{ 

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     gvSemester.DataSource = GetData(string.Format("select COURSE_SEMESTER from COURSE GROUP BY COURSE_SEMESTER")); 

     gvSemester.DataBind(); 
    } 
} 

private static DataTable GetData(string query) 
{ 
    string constr = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString; 
    using (OracleConnection con = new OracleConnection(constr)) 
    { 
     using (OracleCommand cmd = new OracleCommand()) 
     { 
      cmd.CommandText = query; 
      using (OracleDataAdapter sda = new OracleDataAdapter()) 
      { 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       using (DataSet ds = new DataSet()) 
       { 
        DataTable dt = new DataTable(); 
        sda.Fill(dt); 
        return dt; 
       } 
      } 
     } 
    } 
} 

protected void Show_Hide_LevelsGrid(object sender, EventArgs e) 
{ 
    ImageButton imgShowHide = (sender as ImageButton); 
    GridViewRow row = (imgShowHide.NamingContainer as GridViewRow); 
    if (imgShowHide.CommandArgument == "Show") 
    { 
     row.FindControl("pnlLevels").Visible = true; 
     imgShowHide.CommandArgument = "Hide"; 
     imgShowHide.ImageUrl = "~/image/minus.png"; 
     string semesterId = gvSemester.DataKeys[row.RowIndex].Value.ToString();// semester 
     GridView gvLevel = row.FindControl("gvLevel") as GridView; 
     BindLevels(semesterId, gvLevel); 
    } 
    else 
    { 
     row.FindControl("pnlLevels").Visible = false; 
     imgShowHide.CommandArgument = "Show"; 
     imgShowHide.ImageUrl = "~/image/plus.png"; 
    } 
} 

private void BindLevels(string semesterId, GridView gvLevel) 
{ 

    gvLevel.ToolTip = semesterId; 
    gvLevel.DataSource = GetData(string.Format("SELECT COURSE_LEVEL from COURSE where COURSE_SEMESTER= '" + semesterId + "' GROUP BY COURSE_LEVEL ORDER BY COURSE_LEVEL")); //was COURSE_SEMESTER=Check it shows the selected semester levels for all 
    gvLevel.DataBind(); 
} 



protected void Show_Hide_CoursesGrid(object sender, EventArgs e) 
{ 
    ImageButton imgShowHide = (sender as ImageButton); 
    GridViewRow row = (imgShowHide.NamingContainer as GridViewRow); 
    if (imgShowHide.CommandArgument == "Show") 
    { 
     row.FindControl("pnlCourses").Visible = true; 
     imgShowHide.CommandArgument = "Hide"; 
     imgShowHide.ImageUrl = "~/image/minus.png"; 
     string levelId = (row.NamingContainer as GridView).DataKeys[row.RowIndex].Value.ToString();//level 
     GridView gvCourse = row.FindControl("gvCourse") as GridView;//.. 
     BindCourses(levelId, gvCourse);//.. 
    } 
    else 
    { 
     row.FindControl("pnlCourses").Visible = false; 
     imgShowHide.CommandArgument = "Show"; 
     imgShowHide.ImageUrl = "~/image/plus.png"; 
    } 
} 

private void BindCourses(string levelId, GridView gvCourse) 
{ 

    gvCourse.ToolTip = levelId; 
    gvCourse.DataSource = GetData(string.Format("select * from COURSE where COURSE_LEVEL='{0}'", levelId)); 
    gvCourse.DataBind(); 
} 


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 



} 
+0

没有代码在'DropDownList1_SelectedIndexChanged'里面,当你改变'DropDownList'的值时什么都不会发生。 –

+0

发布下拉列表的“SelectedIndexChanged”事件代码 – MusicLovingIndianGirl

+0

谢谢,问题已解决 – Fifo

回答

0

填写你的GridView与下拉SelectedIndexChanged事件并在您的SQL查询应用WHERE条件。

0

为“水平和课程”网格添加更新面板。

在下拉菜单中,更新网格。

UpdatePanelId.Update(); 
1

您可以设置您的下拉列表AutoPostBack = True

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    BindLevels(); 
}