我希望能够在从另一个下拉列表中选择一个值后填充下拉列表(ddlExercise)(ddlType) 目前我从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。任何帮助将不胜感激!
答案 0 :(得分:1)
您的第二个SQL查询错误。 WHERE和TypeName之间应该有一个空格。像这样:
SqlCommand cmd = new SqlCommand("select ExerciseName from ExerciseDisplay Where TypeName='" + ddlType.SelectedValue + "'", con);
答案 1 :(得分:1)
问题在于你的事件,你的事件是为了另一个下拉,你的事件应该是:
protected void ddlType_SelectedIndexChanged(object sender, EventArgs e)
{
BindExercise();
}
对代码的贡献,如果使用数据源填充下拉列表,则添加的项目(如果它们位于bind()之前)将不会显示。您必须添加以下内容,以保留最新内容:
ddlType.Items.Insert(0, "--Please Select country--");
我希望我能提供帮助,祝你好运。 (对不起,我的英文)
答案 2 :(得分:0)
问题出现在selectedIndexChanged函数中,当ddltype下拉列表的索引发生变化而不是dllExericese时,可能会触发该问题,在使用autopost方法后,你应该确保dlltype selectedindex没有改变,方法是设置dlltype.SelectedIndex = dlltyp.selectedindex in函数dlltype_selectedindexchanged与dlltype下拉列表相关联。