我有两个下拉列表作为网络表单的一部分。如果在页面加载事件期间加载列表项,则会设置第一个列表的选定值,但随后会被设置的第二个列表的选定值覆盖。如果我在非页面加载事件中执行相同的操作,则它们可以正常工作。我试图弄清楚为什么第二个列表的选定值在页面加载期间会覆盖第一个列表。
这是C#asp.net Web应用程序。我正在从页面加载的上一页(如果存在)中捕获ID,然后选择页面加载所需的下拉值。如果没有id,则用户从另一个下拉列表中选择一个选项,然后填充表单字段并在两个相关的下拉列表中选择适当的值。
if (!Page.IsPostBack)
{
Load_Courses();
Load_Instructors();
try
{
// Capture course id from another page
if (Request["course_id"] != null)
lstCourses.SelectedValue = Request["course_id"].ToString();
// Load selected course
if (lstCourses.SelectedValue != "")
{
course.Load(int.Parse(lstCourses.SelectedValue));
Load_Form(course);
Session["course"] = course; // Save course
}
}
catch
{
course = new Course();
lstCourses.SelectedIndex = 0;
Clear_Form();
Session["course"] = null;
}
}
}
Load_Form(Course course)
{
// Show course data
txtName.Text = course.GetName();
txtDescription.Text = course.GetDesc();
txtStartDate.Text = course.GetStartDate();
txtEndDate.Text = course.GetEndDate();
txtRegCloseDate.Text = course.GetDateToCloseRegistration();
txtSeats.Text = course.GetNumberOfSeats().ToString();
txtLocation.Text = course.GetLocation();
lstInstructors.SelectedValue = course.GetInstructorId().ToString();
if (course.GetAssistantInstructorId() != 0)
lstAssistants.SelectedValue = course.GetAssistantInstructorId().ToString();
else
lstAssistants.SelectedIndex = 0;
}
lstInstructors.SelectedValue = 4首先让我们说,然后将lstAssistants.SelectedValue设置为一个值,假设6,lstInstructors.SelectedValue也设置为6。从外部页面加载调用Load_Form()时不会发生事件。