2012-03-20 5 views
0

두 개의 드롭 다운리스트 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; 

을하거나 eventhandlers

를 내부에 당신이의 EventTarget을 테스트 할 수를
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); 

    } 
관련 문제