2016-04-04 2 views
0

Я работал на веб-странице asp, у которой есть раскрывающееся название семестра, и в соответствии с выбранным элементом из этого раскрывающегося списка появится gridview уровней и курсов.Настроить gridview из выпадающего элемента управления (C#)

Проблема заключается в том, что вид сетки не меняется в зависимости от выпадающего выбора

Поэтому, когда я выбираю имя семестра, скажем "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 запросе.

0

Добавить панель обновления для сетки «уровни и курсы».

В раскрывающемся меню «Изменить событие» вы обновляете сетку.

UpdatePanelId.Update(); 
1

Вы можете указать свой ниспадающий список AutoPostBack = True.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    BindLevels(); 
} 
Смежные вопросы