【问题标题】:Populating dropdown list after selecting a value from another dropdown list从另一个下拉列表中选择一个值后填充下拉列表
【发布时间】:2014-01-31 18:00:12
【问题描述】:

我希望能够在从另一个下拉列表(ddlType)中选择一个值后填充一个下拉列表(ddlExercise) 目前,我正在从填充下拉列表的 sql 查询中获取 ddlType 下拉列表的值,但是当我选择某些内容时,第二个下拉列表仍然为空。 我在 ddlType 下拉列表中有 3 个值(Gym,Core,Cardio),一旦我选择其中一个,我就使用 dropdownlist.selectedvalue 来检索其相应的结果。 这是我的代码:

    protected void Page_Load(object sender, EventArgs e)
    {
       SqlConnection con = new SqlConnection(@"Con String");


        if (!IsPostBack)

        { BindExerciseType(); }
    }

     public void BindExerciseType()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select ExerciseType from ExerciseType", con);
        SqlDataReader dr = cmd.ExecuteReader();
        ddlType.DataSource = dr;
        ddlType.Items.Clear();
        ddlType.Items.Add("--Please Select country--");
        ddlType.DataTextField = "ExerciseType";
        ddlType.DataValueField = "ExerciseType";
        ddlType.DataBind();
        con.Close();



    }

    public void BindExercise()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select ExerciseName from ExerciseDisplay   Where TypeName='" + ddlType.SelectedValue + "'", con);
        SqlDataReader dr = cmd.ExecuteReader();
        ddlExercise.DataSource = dr;
        ddlExercise.Items.Clear();
        ddlExercise.Items.Add("--Please Select country--");
        ddlExercise.DataTextField = "ExerciseName";
        ddlExercise.DataValueField = "ExerciseName";
        ddlExercise.DataBind();
        con.Close();

    }

        protected void ddlExercise_SelectedIndexChanged(object sender, EventArgs e)
    {
        BindExercise();
    }

任何想法为什么这可能是错误的?我在两个下拉列表中都将 autopostback 属性设置为 true。任何帮助将不胜感激!

【问题讨论】:

    标签: c# asp.net sql drop-down-menu


    【解决方案1】:

    问题是你的事件,你的事件是另一个下拉菜单,你的事件应该是:

    protected void ddlType_SelectedIndexChanged(object sender, EventArgs e)
    {
        BindExercise();
    }
    

    对您的代码的贡献,如果您使用数据源填充下拉列表,那么如果您添加的项目在 bind () 之前,它们将不会出现。您必须添加以下内容,才能保持最新:

    ddlType.Items.Insert(0, "--Please Select country--");
    

    希望我对您有所帮助,并祝您的问题好运。 (对不起,我的英语)

    【讨论】:

    • 非常感谢纳乔!!
    【解决方案2】:

    您的第二个 SQL 查询错误。 WHERE 和 TypeName 之间应该有一个空格。像这样:

    SqlCommand cmd = new SqlCommand("select ExerciseName from ExerciseDisplay   Where TypeName='" + ddlType.SelectedValue + "'", con);
    

    【讨论】:

      【解决方案3】:

      问题出现在 selectedIndexChanged 函数中,当 ddltype 下拉列表的索引更改而不是 dllExericese 时,可能会触发该问题,您还应通过设置 dlltype.SelectedIndex=dlltyp.selectedindex 来确保使用 autopost 方法后 dlltype selectedindex 不会更改与 dlltype 下拉列表关联的函数 dlltype_selectedindexchanged。

      【讨论】:

      • 谢谢萨米。这与问题有关
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多