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;
}
}