日期:2014-05-17  浏览次数:20503 次

遇一棘手的问题,求解决方法:用户资料修改,有一级部门和二级部门。点击修改界面会根据用户原来所在部门在dropdownlist第一个显示原来所在部门
问题如下:用户资料修改,有一级部门和二级部门。点击修改界面,在页面修改的时候(page_load)根据用户原来所在部门在dropdownlist第一个显示原来所在部门,如果用户需要修改一级部门资料,则点击下拉列表选择其他部门,autopostback为true,根据一级部门动态生成二级部门绑定dropdownlist2.
现在的问题是:我在page_load里根据用户原来的部门信息("一棉")在dropdownlist的第一个item显示原来的部门,现在我想修改部门,点击下拉列表,选择"二棉",页面重新加载,又执行了方法page_load里面的startData,dropdownlist1里面还是显示的原来的一级部门“一棉”。如此循环,请问有什么办法解决啊?
注:我需要根据一级部门动态绑定二级部门资料,所以dropdownlist1的SelectedIndexChanged方法需要。那么我可以用js来触发SelectedIndexChanged事件吗?这样是不是就避免了页面的重新加载,就不会又重新执行startData方法,也就避免了dropdownlist11还是显示原来的部门信息

源码:
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            
            startData();
           
        }
        
    }

    //绑定初始数据
    protected void startData()
    {
        DataSet ds = new DataSet();
        UM.userName=Session["user"].ToString();
        ds = UB.users_QueryUserDetail_by_Name(UM);

        ListItem myListItem0 = new ListItem("一棉", "firDepartmentName");
        ListItem myListItem1 = new ListItem("二棉", "firDepartmentName");

        string firDepartmentName = ds.Tables[0].Rows[0]["firDepartmentName"].ToString();
        //一级部门
        if (firDepartmentName=="一棉")
        {
            //移除所有的item
            DropDownList1.Items.Clear();
            //这里把选择项“一棉”放在前面
            this.DropDownList1.Items.Add(myListItem0);
            this.DropDownList1.Items.Add(myListItem1);

        }
        else
        {
            //移除所有的item
            DropDownList1.Items.Clear();
            //这里把选择项“二棉”放在前面
            this.DropDownList1.Items.Add(myListItem1);
            this.DropDownList1.Items.Add(myListItem0);
        }

        //二级部门
        string secDepartmentName = ds.Tables[0].Rows[0]["secDepartmentName"].ToString();
        DropDownList2.Items.Add(secDepartmentName);
    }

    //动态绑定二级部门数据
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        //清除DropDownList2原来的item
        DropDownList2.Items.Clear();

        string FirDeparName = DropDownList1.SelectedItem.Text;
        DataSet ds = SDB.secDepartment_Query_by_FirDeparName_dataset(FirDeparName);

        DropDownList2.DataSource = ds;
        DropDownList2.DataValueField= "secDepartmentName";//绑定DropDownList2的DataValueField属性
        DropDownList2.DataTextField = "secDepartmentName"; //绑定DropDownList2的DataTextField属性

        DropDownList2.DataBind();
    }


------解决方案--------------------
有没有调试一下先