权限维护的一个popup画面_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 权限维护的一个popup画面

权限维护的一个popup画面

 2014/12/12 11:42:43  面惧超人  程序员俱乐部  我要评论(0)
  • 摘要:1.权限以menu表为准为动态///<summary>///画面数据绑定///</summary>protectedvoidBind(){try{LOG.Debug("[Bind]执行开始。");stringstrRoleKey="";stringstrRoleName="";stringstrMenuIds="";string[]MenuId;Sys_MenuBusinessbllSysMenu=newSys_MenuBusiness()
  • 标签:一个

1.权限以menu表为准为动态

        /// <summary>
        /// 画面数据绑定
        /// </summary>
        protected void Bind()
        {
            try
            {
                LOG.Debug("[Bind]执行开始。");
                string strRoleKey = "";
                string strRoleName = "";
                string strMenuIds = "";
                string[] MenuId;

                Sys_MenuBusiness bllSysMenu = new Sys_MenuBusiness();
                DataSet menuDs = new DataSet();

                menuDs = bllSysMenu.GetMenuList();

                for (int countRow = 0; countRow < menuDs.Tables[0].Rows.Count; countRow++)
                {
                    TableRow row = new TableRow();

                    //label
                    TableCell cell1;
                    cell1 = new TableCell();
                    Label lblMenuName = new Label();
                    lblMenuName.ID = "lblMenuName" + countRow.ToString();
                    lblMenuName.Attributes.Add(  "Name","lblMenuName" + countRow.ToString());
                    lblMenuName.Text = menuDs.Tables[0].Rows[countRow]["MenuName"].ToString();
                    lblMenuName.Font.Size = 9;
                    cell1.Controls.Add(lblMenuName);
                    row.Cells.Add(cell1);

                    //checkbox
                    TableCell cell2;
                    cell2 = new TableCell();
                    CheckBox cbxMenuName = new CheckBox();
                    cbxMenuName.ID = "cbxMenuName" + menuDs.Tables[0].Rows[countRow]["MenuId"].ToString();

                    //模式为更新,绑定当前角色权限数据
                    if (model != "0")
                    {
                        //获取更新RoleKey
                        string RoleKey = "";
                        if (Request.QueryString["RoleKey"] != null)
                        {
                            RoleKey = Request.QueryString["RoleKey"].ToString();
                        }

                        //获取更新RoleKey数据
                        Sys_RoleBusiness bll = new Sys_RoleBusiness();
                        DataSet ds = new DataSet();
                        ds = bll.GetKeyRoleList(RoleKey);

                        strRoleKey = ds.Tables[0].Rows[0]["RoleKey"].ToString();
                        strRoleName = ds.Tables[0].Rows[0]["RoleName"].ToString();
                        strMenuIds = ds.Tables[0].Rows[0]["MenuIds"].ToString();
                        if (ds.Tables[0].Rows[0]["IsActivity"].ToString().ToUpper() == "TRUE")
                        {
                            ddlIsActivity.SelectedValue = "1";
                        }
                        else
                        {
                            ddlIsActivity.SelectedValue = "0";
                        }

                        MenuId = strMenuIds.Split(',');

                        hidRoleKey.Value = strRoleKey;
                        txtRoleName.Text = strRoleName;

                        for (int count = 0; count < MenuId.Length; count++)
                        {
                            if (menuDs.Tables[0].Rows[countRow]["MenuId"].ToString() == MenuId[count])
                            {
                                cbxMenuName.Checked = true;
                                break;
                            }
                        }
                    }                    
                    cell2.Controls.Add(cbxMenuName);
                    row.Cells.Add(cell2);

                    tbMenuIds.Rows.Add(row);
                }
                LOG.Debug("[Bind]执行结束。");
            }
            catch (Exception ex)
            {
                LOG.Error(ex.Message);
            }
        }

 

2.弹出子画面时候需要禁用父页面,选用showModalDialog()

   问题一:子画面更新后关闭window.opener=null;window.close();无提示框弹出,会弹出一个新的页面。

   解决方案:在head标签中追加<base target="_self"/>

   问题二:子画面二次进入时保存在缓存中,不走pageload,导致数据更新后没有重新绑定动态checkbox。

   解决方案:Response.Expires = -1;  给一个过期时间,重新刷新页面。

   问题三:子画面DB更新后页面关闭,父页面无刷新保持旧数据。

   解决过程1:window.location.reload(); 会刷新整个页面,有如下提示。

 

   解决过程2:window.location.href = window.location.href; IE完成刷新父页面,但是火狐不兼容,弹不出showModalDialog。

   解决过程3:window.location.replace(url);完成火狐和IE的父页面刷新。

3.更新获取前台动态checkbox,checked的ID(数字部分对应的menuID)拼接字符串逗号隔开

                string strMenuIds = "";
                Sys_MenuBusiness bll = new Sys_MenuBusiness();
                DataSet menuDs = new DataSet();
                menuDs = bll.GetMenuList();

                for (int count = 0; count < menuDs.Tables[0].Rows.Count; count++)
                {
                    string check = Request.Form["cbxMenuName" + menuDs.Tables[0].Rows[count]["MenuId"].ToString()];
                    if (check == "on")
                    {
                        strMenuIds = strMenuIds + menuDs.Tables[0].Rows[count]["MenuId"].ToString() + ",";
                    }
                }

 

发表评论
用户名: 匿名