/// <summary>
        /// 拼接数据项的设置参数
        /// </summary>
        /// <returns></returns>
        public String SetItemSettings(ref List <KeyValueEntity> list)
        {
            //获取效果参数
            List <SettingEntity> ItemSettingDB = Event_ItemSettingDB;

            if (ItemSettingDB != null && ItemSettingDB.Count > 0)
            {
                ControlHelper ControlItem = new ControlHelper(ModuleId);

                foreach (SettingEntity ri in ItemSettingDB)
                {
                    KeyValueEntity item = new KeyValueEntity();
                    item.Key   = ri.Name;
                    item.Value = ControlHelper.GetWebFormValue(ri, this);
                    list.Add(item);
                }
            }
            return(ConvertTo.Serialize <List <KeyValueEntity> >(list));
        }
        /// <summary>
        /// 保存需要提示的内容
        /// </summary>
        public void Put()
        {
            if (!String.IsNullOrEmpty(_Content))
            {
                //将当前的内容序列化到个人缓存

                String s = ConvertTo.Serialize <MessageTips>((MessageTips)this);
                //如果有Session的话需要先清除
                if (HttpContext.Current.Session[SessionName()] != null)
                {
                    HttpContext.Current.Session.Remove(SessionName());
                }
                //增加当前序列化的内容到Session
                HttpContext.Current.Session.Add(SessionName(), s);
            }
            //跳转
            if (!String.IsNullOrEmpty(_GoUrl))
            {
                HttpContext.Current.Response.Redirect(_GoUrl, true);
            }
        }
        /// <summary>
        /// 保存文章
        /// </summary>
        /// <param name="CampaignStatus">文章状态(为-1的时候取选项的值)</param>
        private Boolean SaveDataItem(Int32 CampaignStatus, out Playngo_ClientZone_Campaign Campaign)
        {
            Boolean SaveResult = false;

            Campaign = CampaignItem;

            Campaign.Title         = Common.ReplaceEscape(txtTitle.Text);
            Campaign.GameID        = txtGameID.Text;
            Campaign.GameID_Mobile = txtGameIDMobile.Text;
            Campaign.Version       = txtVersion.Text;



            Campaign.NotifyInclude = cbIncludeNotification.Checked ? 1 : 0;
            Campaign.NotifyStatus  = WebHelper.GetIntParam(Request, ddlNotificationStatus.UniqueID, 0);
            //Campaign.NotifySubscribers = cbNotifySubscribers.Checked ? 1 : 0;
            //文件集合
            //CampaignItem.Files = hfDownLoadFiles.Value;

            //权限
            Campaign.Per_AllUsers = cbPermissionsAllUsers.Checked ? 0 : 1;
            String textStr, idStr = String.Empty;

            WebHelper.GetSelected(cblPermissionsRoles, out textStr, out idStr);
            Campaign.Per_Roles = idStr;


            //区域
            Campaign.Per_AllJurisdictions = cbAllJurisdictions.Checked ? 0 : 1;
            String JurisdictionTexts, JurisdictionIDs = String.Empty;

            WebHelper.GetSelected(cblJurisdictions, out JurisdictionTexts, out JurisdictionIDs);
            Campaign.Per_Jurisdictions = JurisdictionIDs;


            //Game Category
            String GameCategoryTexts, GameCategoryIDs = String.Empty;

            WebHelper.GetSelected(cblGameCategory, out GameCategoryTexts, out GameCategoryIDs);
            Campaign.GameCategories = GameCategoryIDs;


            //文章的发布状态
            if (CampaignStatus == -1)//如果没有指定状态就取控件的
            {
                Campaign.Status = WebHelper.GetIntParam(Request, ddlEventStatus.UniqueID, (Int32)EnumStatus.Published);
            }
            else
            {
                Campaign.Status = CampaignStatus;
            }


            #region "关于动态选项的代码"

            List <KeyValueEntity> list          = new List <KeyValueEntity>();
            List <SettingEntity>  ItemSettingDB = Campaign_ItemSettingDB;
            if (ItemSettingDB != null && ItemSettingDB.Count > 0)
            {
                ControlHelper ControlItem = new ControlHelper(ModuleId);

                foreach (SettingEntity ri in ItemSettingDB)
                {
                    KeyValueEntity item = new KeyValueEntity();
                    item.Key   = ri.Name;
                    item.Value = ControlHelper.GetWebFormValue(ri, this);
                    list.Add(item);
                }
            }


            //从动态选项中获取Roadmap启用状态
            if (list.Exists(r => r.Key == "IncludeRoadmap"))
            {
                KeyValueEntity Entity = list.Find(r => r.Key == "IncludeRoadmap");
                Campaign.IncludeRoadmap = Convert.ToBoolean(Entity.Value) ? 0 : 1;
            }

            //伪静态URL
            String FriendlyUrl = String.Empty;
            if (list.Exists(r => r.Key == "FriendlyUrl"))
            {
                KeyValueEntity TitleEntity = list.Find(r => r.Key == "FriendlyUrl");
                FriendlyUrl = TitleEntity.Value.ToString();

                if (String.IsNullOrEmpty(FriendlyUrl) && !String.IsNullOrEmpty(Campaign.Title))
                {
                    FriendlyUrl = Common.FriendlySlug(Campaign.Title);
                }

                Campaign.UrlSlug  = FriendlyUrl;
                TitleEntity.Value = FriendlyUrl;
                list[list.FindIndex(r => r.Key == "FriendlyUrl")] = TitleEntity;
            }
            Campaign.Options = ConvertTo.Serialize <List <KeyValueEntity> >(list);
            #endregion



            //更新项
            Campaign.LastIP   = WebHelper.UserHost;
            Campaign.LastTime = xUserTime.LocalTime();
            Campaign.LastUser = UserId;

            //开始状态和时间
            DateTime oTime           = xUserTime.LocalTime();
            string[] expectedFormats = { "G", "g", "f", "F" };
            string   StartDate       = WebHelper.GetStringParam(Request, txtStartDate.UniqueID, oTime.ToString("MM/dd/yyyy"));
            string   StartTime       = WebHelper.GetStringParam(Request, txtStartTime.UniqueID, oTime.ToString("HH:mm:ss"));
            if (DateTime.TryParseExact(String.Format("{0} {1}", StartDate, StartTime), "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-US", false), DateTimeStyles.AllowWhiteSpaces, out oTime))
            {
                Campaign.StartTime = oTime;
            }


            //发布状态和时间
            DateTime oReleaseTime = xUserTime.LocalTime();
            string   ReleaseDate  = WebHelper.GetStringParam(Request, txtReleaseDate.UniqueID, oTime.ToString("MM/dd/yyyy"));
            string   ReleaseTime  = WebHelper.GetStringParam(Request, txtReleaseTime.UniqueID, oTime.ToString("HH:mm:ss"));
            if (DateTime.TryParseExact(String.Format("{0} {1}", ReleaseDate, ReleaseTime), "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-US", false), DateTimeStyles.AllowWhiteSpaces, out oReleaseTime))
            {
                Campaign.ReleaseDate = oReleaseTime;
            }


            //结束状态和时间
            DateTime EndTime     = xUserTime.LocalTime().AddDays(1);
            string   DisableDate = WebHelper.GetStringParam(Request, txtDisableDate.UniqueID, EndTime.ToString("MM/dd/yyyy"));
            string   DisableTime = WebHelper.GetStringParam(Request, txtDisableTime.UniqueID, EndTime.ToString("HH:mm:ss"));
            if (DateTime.TryParseExact(String.Format("{0} {1}", DisableDate, DisableTime), "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-US", false), DateTimeStyles.AllowWhiteSpaces, out EndTime))
            {
                Campaign.EndTime = EndTime;
            }


            //创建用户改为可以选择
            Campaign.CreateUser = WebHelper.GetIntParam(Request, hfEventAuthor.UniqueID, UserId);


            if (Campaign.ID > 0)
            {
                //更新
            }
            else
            {
                //新增
                Campaign.ModuleId   = ModuleId;
                Campaign.PortalId   = PortalId;
                Campaign.CreateTime = xUserTime.LocalTime();
            }


            int ResultCampaign = 0;

            if (Campaign.ID > 0)
            {
                ResultCampaign = Campaign.Update();
            }
            else
            {
                ResultCampaign = Campaign.ID = Campaign.Insert();
            }

            if (ResultCampaign > 0)
            {
                SaveResult = true;


                //邮件发送
                //if (Campaign.SendMail == 0 && cbNotifySubscribers.Checked)
                if (cbNotifySubscribers.Checked)
                {
                    //利用现成发送邮件
                    var objs = new Dictionary <object, object>();
                    objs.Add("DataItem", Campaign);
                    objs.Add("PortalUrl", PortalUrl);
                    ManagedThreadPool.QueueUserWorkItem(new WaitCallback(ThreadCreateSendMail), objs);


                    //更新发送状态
                    //Playngo_ClientZone_Campaign.Update(String.Format("SendMail={0}", 1), String.Format("ID={0}", Campaign.ID));
                }
            }
            else
            {
                SaveResult = false;
            }
            return(SaveResult);
        }
        /// <summary>
        /// 页面加载
        /// </summary>
        protected void Page_PreRender(object sender, EventArgs e)
        {
            try
            {
                if (GameSheetID > 0)
                {
                    if (GameSheetItem != null && GameSheetItem.ID > 0)
                    {
                        //拷贝需要复制的记录
                        var DBGameSheet = GameSheetItem.Clone() as Playngo_ClientZone_GameSheet;

                        String Title   = DBGameSheet.Title;
                        String UrlSlug = DBGameSheet.UrlSlug;

                        DBGameSheet.ID = 0;

                        DBGameSheet.Title   = String.Format("Copy - {0}", Title);
                        DBGameSheet.UrlSlug = String.Format("copy-{0}", UrlSlug);

                        Int32 i = 1;

                        while (Playngo_ClientZone_GameSheet.FindExists(DBGameSheet))
                        {
                            i = i + 1;
                            DBGameSheet.Title   = String.Format("Copy {0} - {1}", i, Title);
                            DBGameSheet.UrlSlug = String.Format("copy-{0}-{1}", i, UrlSlug);
                        }

                        DBGameSheet.Status     = (Int32)EnumStatus.Pending;
                        DBGameSheet.CreateUser = UserId;
                        DBGameSheet.CreateTime = xUserTime.UtcTime();


                        List <KeyValueEntity> list = ConvertTo.Deserialize <List <KeyValueEntity> >(DBGameSheet.Options);
                        if (list != null && list.Count > 0)
                        {
                            if (list.Exists(r => r.Key == "FriendlyUrl"))
                            {
                                list[list.FindIndex(r => r.Key == "FriendlyUrl")].Value = DBGameSheet.UrlSlug;
                            }

                            DBGameSheet.Options = ConvertTo.Serialize <List <KeyValueEntity> >(list);
                        }



                        DBGameSheet.ID = DBGameSheet.Insert();


                        if (DBGameSheet.ID > 0)
                        {
                            //复制文件关系
                            CopyDownFileRelations(DBGameSheet.ID, GameSheetID);

                            //复制动态模块及内容
                            CopyDynamicModules(DBGameSheet.ID, GameSheetID);

                            mTips.IsPostBack = false;
                            mTips.LoadMessage("CopyGameSheetSuccess", EnumTips.Success, this, new String[] { GameSheetItem.Title });

                            Response.Redirect(xUrl("ID", DBGameSheet.ID.ToString(), "GameSheets-Edit"), false);
                        }
                        else
                        {
                            mTips.IsPostBack = false;
                            mTips.LoadMessage("CopyGameSheetError", EnumTips.Warning, this, new String[] { GameSheetItem.Title });
                            Response.Redirect(xUrl("GameSheets"), false);
                        }
                    }
                    else
                    {
                        //没有查找到数据
                    }
                }
                else
                {
                    //ID传输得不对
                }
            }
            catch (Exception ex)
            {
                ProcessModuleLoadException(ex);
            }
        }