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

C# 无法根据下拉列表更改字段信息,c#,drop-down-menu,selectedindexchanged,C#,Drop Down Menu,Selectedindexchanged,我认为这个问题有一个简单的解决办法,但我已经绞尽脑汁想了几天了。我有一个web应用程序,其中动态地从存储过程中获取学生列表。我想查看每个学生的详细信息以及后续的班级信息。在学生的详细信息页面上,有一个下拉列表,其中包含该学生所在的所有班级,选择其中一个班级时,应更新“社区合作伙伴”字段 我正在使用SelectedIndexChanged方法,但为了使其工作,我需要将AutoPostBack设置为True,这会导致重新加载页面,从而也会重新加载下拉列表和所选值。我尝试了这段代码的几种不同配置,但没

我认为这个问题有一个简单的解决办法,但我已经绞尽脑汁想了几天了。我有一个web应用程序,其中动态地从存储过程中获取学生列表。我想查看每个学生的详细信息以及后续的班级信息。在学生的详细信息页面上,有一个下拉列表,其中包含该学生所在的所有班级,选择其中一个班级时,应更新“社区合作伙伴”字段

我正在使用SelectedIndexChanged方法,但为了使其工作,我需要将AutoPostBack设置为True,这会导致重新加载页面,从而也会重新加载下拉列表和所选值。我尝试了这段代码的几种不同配置,但没有结果

这是我的ascx文件

<asp:DropDownList ID="StudentCourses" runat="server"></asp:DropDownList>
这是我的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;
    }
protectedvoid StudentCourses\u SelectedIndexChanged(对象发送者,事件参数e)
{
IList courseList=studentRepository.GetStudentCourses(Convert.ToInt32(Session[“StudentID]”));
StudentCourses.DataSource=课程列表;
StudentCourses.DataBind();
int ctr=0;
foreach(courseList中的KeyValuePair kvp)
{
if(中心<学生课程.项目.计数)
{
StudentCourses.Items[ctr].Text=kvp.Key.CourseCode;
StudentCourses.Items[ctr].Value=kvp.Value.PartnerName;
ctr++;
}
否则ctr=0;
}
StudentCommunityPartner.Text=StudentCourses.SelectedItem.Value;
}

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

要设置下拉更改的文本框,请查看此处:

如果您还有更多要做的事情,则下拉列表中的选定值应在回发时保持在视图状态。您可以尝试保存该值

var Selected=StudentCourses.SelectedValue

填充下拉列表 然后用保存的值设置选定的值


StudentCourses.SelectedValue=已选择

“我尝试了几种组合,但我不知道如何解决这个问题。”。。。你从来不会说问题出在哪里,只是随便捅一捅,我猜在你的页面加载处理程序中,你没有检查page.IsPostBack,你的dropdownlist正在重新填充数据,这会重置它的“选定索引”
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;
    }