【问题标题】:Populate gridview from dropdown control (C#)从下拉控件填充 gridview (C#)
【发布时间】:2016-04-04 06:08:59
【问题描述】:

我在一个有学期名称下拉列表的asp网页上工作,根据从这个下拉列表中选择的项目,将出现一个级别和课程的网格视图。

问题是网格视图永远不会根据下拉选择改变

所以当我选择学期名称时,比如说"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)
    {

    }



}

【问题讨论】:

  • 如果DropDownList1_SelectedIndexChanged 中没有代码,当您更改DropDownList 的值时,不会发生任何事情。
  • 发布下拉列表SelectedIndexChanged事件的代码
  • 谢谢,问题已解决

标签: c# asp.net gridview


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用下拉 SelectedIndexChanged 事件填充您的网格视图,并在 SQL 查询中应用 where 条件。

    【讨论】:

      【解决方案3】:

      为“级别和课程”网格添加更新面板。

      在下拉更改事件中,您更新网格。

      UpdatePanelId.Update();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多