我认为这个问题有一个简单的解决方案,但几天来我一直在努力解决这个问题。我有一个 Web 应用程序,其中从存储过程中动态获取学生列表。我想查看每个学生的详细信息和后续班级信息。On the Student's Details page, there is a dropdown list that contains all the classes that the student is in and when one is selected, the Community Partner field should be updated.
我正在使用 SelectedIndexChanged 方法,但为了使其工作,我需要将 AutoPostBack 设置为 True,这会导致页面重新加载,因此下拉列表和选定的值也会重新加载。我尝试了此代码的几种不同配置,但没有结果。
这是我的 ascx 文件
<asp:DropDownList ID="StudentCourses" runat="server"></asp:DropDownList>
这是我的 ascx.cs 文件
protected void Page_PreRender(object sender, EventArgs e)
{
if (Session["StudentID"] != null)
{
int studentId = Convert.ToInt32(Session["StudentID"]);
Student student = studentRepository.GetStudent(studentId);
StudentCourses_SelectedIndexChanged(sender, e);
StudentCommunityPartner.Text = StudentCourses.SelectedItem.Value;
...
这是我的 SelectedIndexChanged 方法
protected void StudentCourses_SelectedIndexChanged(object sender, EventArgs e)
{
IList<KeyValuePair<Course, CommunityPartner>> courseList = studentRepository.GetStudentCourses(Convert.ToInt32(Session["StudentID"]));
StudentCourses.DataSource = courseList;
StudentCourses.DataBind();
int ctr = 0;
foreach (KeyValuePair<Course, CommunityPartner> kvp in courseList)
{
if (ctr < StudentCourses.Items.Count)
{
StudentCourses.Items[ctr].Text = kvp.Key.CourseCode;
StudentCourses.Items[ctr].Value = kvp.Value.PartnerName;
ctr++;
}
else ctr = 0;
}
StudentCommunityPartner.Text = StudentCourses.SelectedItem.Value;
}
我已经尝试了几种组合,但我不知道如何正确更改页面上的内容,而不会每次都刷新下拉列表。感谢您的帮助,非常感谢。