一页中有两个下拉列表(冲突)

本文关键字:两个 下拉列表 冲突 一页 | 更新日期: 2023-09-27 18:28:24

两个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);
        }

一页中有两个下拉列表(冲突)

如果ViewState处于关闭状态(在下拉菜单或其任何父项上,一直到页面),则事件不会触发。(不过应该发回来…)

问题似乎是由页面缓存引起的。我想说,你的两个事件被触发了,但你看不到它,因为重定向

您可以禁用表单的缓存:

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