public DataTable gridKeywords_OnDataBind(string sortField, string searchFiletrs, string toolbarFilters, string userData, int pageNo, int pageSize, ref int resultCount, ref string customData)
        {
            if (ActionType == "edit")
            {
                DataTable dataTableParserFormulas = Facade.ParserFormula.GetParserFormulas(SmsParserGuid);
                DataTable dtSmsParserOptions      = new DataTable();
                Business.ParserFormulaSerialization parserFormulaSerialization = new Business.ParserFormulaSerialization();

                DataRow row;

                dtSmsParserOptions.Columns.Add("Guid", typeof(Guid));
                dtSmsParserOptions.Columns.Add("IsCorrect", typeof(bool));
                dtSmsParserOptions.Columns.Add("CorrectKey", typeof(bool));
                dtSmsParserOptions.Columns.Add("Title", typeof(string));
                dtSmsParserOptions.Columns.Add("Key", typeof(string));
                dtSmsParserOptions.Columns.Add("ReferenceGuid", typeof(string));

                for (int parserFormulaIndex = 0; parserFormulaIndex < dataTableParserFormulas.Rows.Count; parserFormulaIndex++)
                {
                    row = dtSmsParserOptions.NewRow();

                    row["Guid"]       = Guid.NewGuid();
                    row["IsCorrect"]  = Helper.GetBool(dataTableParserFormulas.Rows[parserFormulaIndex]["IsCorrect"]);
                    row["CorrectKey"] = Helper.GetBool(dataTableParserFormulas.Rows[parserFormulaIndex]["IsCorrect"]);
                    row["Title"]      = dataTableParserFormulas.Rows[parserFormulaIndex]["Title"].ToString();
                    row["Key"]        = dataTableParserFormulas.Rows[parserFormulaIndex]["Key"].ToString();

                    string reactionExtension = dataTableParserFormulas.Rows[parserFormulaIndex]["ReactionExtention"].ToString();
                    parserFormulaSerialization = (Business.ParserFormulaSerialization)GeneralLibrary.SerializationTools.DeserializeXml(reactionExtension, typeof(Business.ParserFormulaSerialization));

                    row["ReferenceGuid"] = parserFormulaSerialization.ReferenceGuid.ToString();
                    dtSmsParserOptions.Rows.Add(row);
                }

                return(dtSmsParserOptions);
            }
            else
            {
                return(new DataTable());
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                Common.SmsParser smsParser = new Common.SmsParser();

                #region Create Table Of Options
                string keywords = hdnKeywords.Value;
                Business.ParserFormulaSerialization parserFormulaSerialization = new Business.ParserFormulaSerialization();

                DataTable dtSmsParserOptions = new DataTable();
                DataRow   row;
                dtSmsParserOptions.Columns.Add("Guid", typeof(Guid));
                dtSmsParserOptions.Columns.Add("IsCorrect", typeof(bool));
                dtSmsParserOptions.Columns.Add("Title", typeof(string));
                dtSmsParserOptions.Columns.Add("Key", typeof(string));
                dtSmsParserOptions.Columns.Add("ReactionExtention", typeof(string));

                int countOptions = Helper.GetInt(Helper.ImportData(keywords, "resultCount"));
                for (int counterOptions = 0; counterOptions < countOptions; counterOptions++)
                {
                    row = dtSmsParserOptions.NewRow();

                    row["Guid"]      = Guid.NewGuid();
                    row["IsCorrect"] = Helper.ImportBoolData(keywords, ("CorrectKey" + counterOptions).ToString());
                    row["Title"]     = Helper.ImportData(keywords, ("Title" + counterOptions).ToString());
                    row["Key"]       = Helper.ImportData(keywords, ("Key" + counterOptions).ToString());

                    parserFormulaSerialization.ReferenceGuid = Helper.GetGuid(Helper.ImportData(keywords, ("ReferenceGuid" + counterOptions).ToString()));
                    row["ReactionExtention"] = SerializationTools.SerializeToXml(parserFormulaSerialization, parserFormulaSerialization.GetType());
                    dtSmsParserOptions.Rows.Add(row);
                }

                if (dtSmsParserOptions.Rows.Count == 0)
                {
                    throw new Exception(Language.GetString("SelcectCompetitionOptions"));
                }
                #endregion

                smsParser.PrivateNumberGuid = Helper.GetGuid(drpSenderNumber.SelectedValue);
                smsParser.Title             = txtTitle.Text;
                smsParser.Type         = (int)Arad.SMS.Gateway.Business.SmsParserType.Competition;
                smsParser.CreateDate   = DateTime.Now;
                smsParser.FromDateTime = DateManager.GetChristianDateTimeForDB(dtpStartDate.FullDateTime);
                smsParser.ToDateTime   = DateManager.GetChristianDateTimeForDB(dtpEndDate.FullDateTime);
                var dateTime    = dtpStartDate.FullDateTime;
                var dateTimeEnd = dtpEndDate.FullDateTime;
                if (Session["Language"].ToString() == "fa")
                {
                    smsParser.FromDateTime = DateManager.GetChristianDateTimeForDB(dateTime);
                    smsParser.ToDateTime   = DateManager.GetChristianDateTimeForDB(dateTimeEnd);
                }
                else
                {
                    smsParser.FromDateTime = DateTime.Parse(dateTime);
                    smsParser.ToDateTime   = DateTime.Parse(dateTimeEnd);
                }
                smsParser.Scope    = Helper.GetGuid(drpScope.SelectedValue);
                smsParser.UserGuid = UserGuid;
                smsParser.ReplyPrivateNumberGuid     = Helper.GetGuid(drpReplyPrivateNumber.SelectedValue);
                smsParser.ReplySmsText               = txtReplySmsText.Text;
                smsParser.DuplicatePrivateNumberGuid = Helper.GetGuid(drpDuplicatePrivateNumber.SelectedValue);
                smsParser.DuplicateUserSmsText       = txtDuplicateUserSmsText.Text;

                if (smsParser.HasError)
                {
                    throw new Exception(smsParser.ErrorMessage);
                }

                switch (ActionType)
                {
                case "insert":
                    if (!Facade.SmsParser.InsertCompetition(smsParser, dtSmsParserOptions))
                    {
                        throw new Exception(Language.GetString("ErrorRecord"));
                    }

                    break;

                case "edit":
                    smsParser.SmsParserGuid = SmsParserGuid;
                    if (!Facade.SmsParser.UpdateCompetition(smsParser, dtSmsParserOptions))
                    {
                        throw new Exception(Language.GetString("ErrorRecord"));
                    }
                    break;
                }

                Response.Redirect(string.Format("/PageLoader.aspx?c={0}", Helper.Encrypt((int)Arad.SMS.Gateway.Business.UserControls.UI_SmsParsers_Competitions_Competition, Session)));
            }
            catch (Exception ex)
            {
                ShowMessageBox(ex.Message, string.Empty, "danger");
            }
        }