Ext.Net.Store.RaiseAjaxPostBackEvent C# (CSharp) Method

RaiseAjaxPostBackEvent() private method

private RaiseAjaxPostBackEvent ( string eventArgument ) : void
eventArgument string
return void
        private void RaiseAjaxPostBackEvent(string eventArgument)
        {
            bool needConfirmation = false;

            try
            {
                if (eventArgument.IsEmpty())
                {
                    throw new ArgumentNullException("eventArgument");
                }

                XmlNode xmlData = this.SubmitConfig;
                string data = null;
                XmlNode parametersNode = null;

                if (xmlData != null)
                {
                    parametersNode = xmlData.SelectSingleNode("config/extraParams");
                
                    XmlNode serviceNode = xmlData.SelectSingleNode("config/serviceParams");

                    if (serviceNode != null)
                    {
                        data = serviceNode.InnerText;
                    }
                }

                string action = eventArgument;

                BeforeDirectEventArgs e = new BeforeDirectEventArgs(action, data, parametersNode);
                this.OnAjaxPostBack(e);
                PageProxy dsp = this.Proxy.Proxy as PageProxy;

                if (this.AutoDecode && data.IsNotEmpty())
                {
                    data = HttpUtility.HtmlDecode(data);
                }

                switch(action)
                {
                    case "update":
                        if (data == null)
                        {
                            throw new InvalidOperationException("No data in request");
                        }

                        needConfirmation = this.UseIdConfirmation;
                        this.DoSaving(data, parametersNode);
                        
                        if (this.RefreshAfterSaving == RefreshAfterSavingMode.None || dsp != null)
                        {
                            needRetrieve = false;
                        }
                        
                        break;
                    case "refresh":
                        needRetrieve = true;
                        StoreRefreshDataEventArgs refreshArgs = new StoreRefreshDataEventArgs(parametersNode);
                        this.OnRefreshData(refreshArgs);
                        
                        if (dsp != null)
                        {
                            if (refreshArgs.Total > -1)
                            {
                                dsp.Total = refreshArgs.Total; 
                            }
                        }

                        break;
                    case "submit":
                        needRetrieve = false;

                        if (data == null)
                        {
                            throw new InvalidOperationException("No data in request");
                        }

                        StoreSubmitDataEventArgs args =new StoreSubmitDataEventArgs(data, parametersNode);
                        this.OnSubmitData(args);

                        break;
                }
            }
            catch (Exception ex)
            {
                success = false;
                msg = this.IsDebugging ? ex.ToString() : ex.Message;

                if (this.ResourceManager.RethrowAjaxExceptions)
                {
                    throw;
                }
            }

            AfterDirectEventArgs eAjaxPostBackResult = new AfterDirectEventArgs(new Response(success, msg));
            this.OnAjaxPostBackResult(eAjaxPostBackResult);
            
            StoreResponseData response = new StoreResponseData();
            
            if (needRetrieve && eAjaxPostBackResult.Response.Success)
            {
                if (this.RequiresDataBinding)
                {
                    this.DataBind(); 
                }

                response.Data = this.GetAjaxDataJson();
                PageProxy dsp = this.Proxy.Proxy as PageProxy;
                response.Total = dsp != null ? dsp.Total : 0;
            }

            if (needConfirmation)
            {
                response.Confirmation = changingEventArgs.ConfirmationList;
            }

            eAjaxPostBackResult.Response.Data = response.ToString();

            ResourceManager.ServiceResponse = eAjaxPostBackResult.Response;
        }
    }