/// <summary>
        /// 保存菜单节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            int  result   = -1;
            bool isForced = chkIsForced.Checked;

            AspnetMenuItem item = new AspnetMenuItem();

            if (lblMenuId.Text != "")
            {
                item.MenuId = int.Parse(lblMenuId.Text);
            }

            if (lblFatherId.Text == "")
            {
                item.FatherId = 0;
            }
            else
            {
                item.FatherId = int.Parse(lblFatherId.Text);
            }

            item.Title       = txtMenuName.Text;
            item.Description = txtdescription.Text.Trim();
            item.Keywords    = txtMenuKeys.Text.Trim();
            item.Url         = txtUrl.Text.Trim();
            item.ItemType    = int.Parse(rblItemType.SelectedValue);
            item.AuthType    = int.Parse(rblAuthType.SelectedValue);

            if (item.AuthType == 3)
            {
                List <string> roles = new List <string>();
                foreach (ListItem ritem in chkRoles.Items)
                {
                    if (ritem.Selected)
                    {
                        roles.Add(ritem.Text);
                    }
                }
                item.Roles = roles.ToArray();
            }
            else
            {
                item.Roles = new string[0];
            }

            if (item.MenuId > 0)
            {
                result = AspnetMenu.UpdateMenuItem(item, isForced);
            }
            else
            {
                result = AspnetMenu.AddMenuItem(item, isForced);
            }

            /*
             *  0: 正常操作
             *  1: 当前应用的父分类不存在
             *  2: 当前应用中的URL已经被添加
             *  3:  授权冲突,已存在相应基本URL的授权
             *  4: 授权类型不正确
             *  5: 输入的URL有错误
             *  6:  当前应用不存在
             * */
            switch (result)
            {
            case 0:
                lblResult.Text = "操作成功";
                break;

            case 1:
                lblResult.Text = "当前应用的父分类不存在";
                break;

            case 2:
                lblResult.Text = "当前应用中的URL已经被添加,可以通过添加参数来保证url不冲突";
                break;

            case 3:
                lblResult.Text = "授权冲突,已存在相应基本URL的授权";
                break;

            case 4:
                lblResult.Text = "授权类型不正确";
                break;

            case 5:
                lblResult.Text = "输入的URL有错误";
                break;

            case 6:
                lblResult.Text = "当前应用不存在";
                break;

            default:
                lblResult.Text = "发生不确定错误";
                break;
            }
            BindMenuTreeView();
        }
        /// <summary>
        /// 菜单节点改变
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tvMenu_SelectedNodeChanged(object sender, EventArgs e)
        {
            TreeNode node   = tvMenu.SelectedNode;
            int      menuId = int.Parse(node.Value);

            if (menuId != 0)
            {
                AspnetMenuItem item = AspnetMenu.GetMenuItem(menuId);

                lblMenuId.Text            = item.MenuId.ToString();
                lblFatherId.Text          = item.FatherId.ToString();
                txtMenuName.Text          = item.Title;
                txtdescription.Text       = item.Description;
                txtMenuKeys.Text          = item.Keywords;
                rblItemType.SelectedIndex = item.ItemType;
                txtUrl.Text = item.Url;

                foreach (ListItem authitem in rblAuthType.Items)
                {
                    if (authitem.Value == item.AuthType.ToString())
                    {
                        authitem.Selected = true;
                    }
                    else
                    {
                        authitem.Selected = false;
                    }
                }

                if (item.AuthType == 3)
                {
                    chkRoles.Enabled = true;
                }
                else
                {
                    chkRoles.Enabled = false;
                }

                btnDelete.Enabled = true;
                btnSave.Enabled   = true;

                foreach (ListItem ritem in chkRoles.Items)
                {
                    bool ischeck = false;
                    for (int i = 0; i < item.Roles.Length; i++)
                    {
                        if (item.Roles[i] == ritem.Text)
                        {
                            ischeck = true;
                            break;
                        }
                    }
                    ritem.Selected = ischeck;
                }
            }
            else
            {
                lblMenuId.Text    = node.Value;
                txtMenuName.Text  = node.Text;
                btnDelete.Enabled = false;
                btnSave.Enabled   = false;
            }
        }