2012-03-20 2 views
0

Два dropdownlists drop1, drop2 имеют отдельный выбранный индекс изменен. Любое выпадающее меню, на selectedindexchanged, переходит на другую страницу. Если мы используем кнопку «Назад» в браузере, она возвращается на нашу домашнюю страницу, и одна из выпадающих меню будет выбрана. Если мы изменим другое раскрывающееся меню, оно работает только с первым выбранным индексом, измененным в разделе кодированияДва выпадающих списка на странице (конфликт)

Как мы можем решить эту проблему?

код

protected void Page_Load(System.Object sender, System.EventArgs e) 
     { 
      try 
      { 
       if (!Page.IsPostBack) 
       { 
        string zCenterId="0"; 

        if(Request.QueryString["LCID"]!=null) 
        { 
         zCenterId = Request.QueryString["LCID"].ToString(); 

        } 
        ManageActivityAdminUIController ObjCtrl = new ManageActivityAdminUIController(); 
      List<ManageActivityAdminUIInfo> ObjInfo = ObjCtrl.GetActivityList(zCenterId); 
      drplistactivity.DataSource = ObjInfo; 
      drplistactivity.DataBind(); 

      drplistactivity.DataSource = ObjInfo; 
      drplistactivity.DataTextField = "ActivityName"; 
      drplistactivity.DataValueField = "ID"; 
      drplistactivity.DataBind(); 
      drplistactivity.Items.Insert(0, new ListItem("<--Select Activity-->", "0")); 
        ManageCoursesController ObjCtrl = new ManageCoursesController(); 
      List<ManageCoursesInfo> ObjInfo = ObjCtrl.GetCourses(zCenterId); 

      drplistcourse.DataSource = ObjInfo; 
      drplistcourse.DataTextField = "CourseName"; 
      drplistcourse.DataValueField = "ID"; 
      drplistcourse.DataBind(); 
      drplistcourse.Items.Insert(0, new ListItem("<--Select Course-->", "0")); 
       } 
      } 
      catch (Exception exc) //Module failed to load 
      { 
       Exceptions.ProcessModuleLoadException(this, exc); 
      } 

     } 


    protected void drplistactivity_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string url = ResolveClientUrl("~/Activity.aspx?ActivityId="+drplistactivity.SelectedItem.Value); 
      Response.Redirect(url); 
     } 
     protected void drplistcourse_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string url = ResolveClientUrl("~/Course.aspx?CourseId=" + drplistcourse.SelectedItem.Value); 
      Response.Redirect(url); 

     } 
+0

Вы отлаживали? что происходит точно? неправильный выбор SelectIndexChanged? – magnattic

ответ

0

Если ViewState выключен (в выпадающем списке или любого из его родителей - вплоть до страницы), то событие не срабатывает. (Он должен опубликовать обратно, хотя ...)

0

Проблема, похоже, вызвана кэшированием вашей страницы. Я бы сказал, что ваши два события срабатывают, но вы не можете видеть это из-за перенаправления

Вы можете отключить кэширование вашей формы:

 HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
     HttpContext.Current.Response.Cache.SetValidUntilExpires(false); 
     HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     HttpContext.Current.Response.Cache.SetNoStore(); 
     Response.Expires = -1; 

или вы можете проверить EventTarget внутри вашего eventhandlers

protected void drplistcourse_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if(drplistcourse.UniqueID!=Request.Form["__EVENTTARGET"]) 
      return; 
     string url = ResolveClientUrl("~/Course.aspx?CourseId=" + drplistcourse.SelectedItem.Value); 
     Response.Redirect(url); 

    } 
Смежные вопросы