Два выпадающих списка на странице (конфликт)

В двух выпадающих списках 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);

        }

person ranjenanil    schedule 20.03.2012    source источник
comment
ты отлаживал? что именно происходит? вызывается неправильный SelectIndexChanged?   -  person magnattic    schedule 20.03.2012


Ответы (2)


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

person SmartestVEGA    schedule 20.03.2012

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

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

        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;

или вы можете протестировать цель события внутри ваших обработчиков событий

    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);

    }
person jbl    schedule 20.03.2012