无法根据下拉列表更改字段信息

时间:2013-02-28 20:09:34

标签: c# drop-down-menu selectedindexchanged

我认为这个问题有一个简单的解决方案,但我现在已经敲了几天。我有一个Web应用程序,其中动态获取存储过程中的学生列表。我想查看每个学生的详细信息和随后的课程信息。在学生详细信息页面上,有一个下拉列表,其中包含学生所在的所有课程,当选择一个课程时,社区合作伙伴字段应该更新。

我正在使用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;
    }

我尝试了几种组合,我不知道如何正确地更改页面上的内容,而不是每次都刷新下拉列表。感谢您的帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

要在下拉列表中设置文本框,请在此处查看:

set dropdownlist value to textbox in jQuery

如果您想要执行更多操作,则下拉列表中的选定值应保留在回发后的视图状态中。您可以尝试保存该值

var Selected = StudentCourses.SelectedValue;

填充下拉菜单 然后使用保存的值

设置所选值

StudentCourses.SelectedValue =已选中;