protected virtual void OnSelecting(CrmDataSourceSelectingEventArgs args) { EventHandler <CrmDataSourceSelectingEventArgs> handler = base.Events[EventSelecting] as EventHandler <CrmDataSourceSelectingEventArgs>; if (handler != null) { handler(this, args); } }
protected override IAsyncResult BeginExecuteSelect( DataSourceSelectArguments arguments, AsyncCallback asyncCallback, object asyncState) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "Begin"); if (CanSort) { arguments.AddSupportedCapabilities(DataSourceCapabilities.Sort); } if (CanPage) { arguments.AddSupportedCapabilities(DataSourceCapabilities.Page); } if (CanRetrieveTotalRowCount) { arguments.AddSupportedCapabilities(DataSourceCapabilities.RetrieveTotalRowCount); } string fetchXml; QueryByAttribute query; InitializeParameters(out fetchXml, out query); // raise pre-event CrmDataSourceSelectingEventArgs selectingArgs = new CrmDataSourceSelectingEventArgs( Owner, arguments, fetchXml, query); OnSelecting(selectingArgs); IEnumerable selectResult = null; if (selectingArgs.Cancel) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "Cancel"); return(new SynchronousAsyncSelectResult(selectResult, asyncCallback, asyncState)); } // merge event results arguments.RaiseUnsupportedCapabilitiesError(this); fetchXml = selectingArgs.FetchXml; if (CancelSelectOnNullParameter && string.IsNullOrEmpty(fetchXml) && query == null) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "CancelSelectOnNullParameter"); return(new SynchronousAsyncSelectResult(selectResult, asyncCallback, asyncState)); } try { _client = OrganizationServiceContextFactory.Create(Owner.CrmDataContextName); if (!string.IsNullOrEmpty(fetchXml)) { var fetch = ToFetch(arguments, fetchXml); ADXTrace.Instance.TraceInfo(TraceCategory.Application, "End"); return(ExecuteSelect(_client, null, fetch, asyncCallback, asyncState)); } if (query != null) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "QueryByAttribute"); // the SortExpression has high priority, apply it to the query AppendSortExpressionToQuery(arguments.SortExpression, order => query.Orders.Add(order)); ADXTrace.Instance.TraceInfo(TraceCategory.Application, "End"); return(ExecuteSelect(_client, query, null, asyncCallback, asyncState)); } } catch (System.Web.Services.Protocols.SoapException ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("{0}\n\n{1}", ex.Detail.InnerXml, ex.ToString())); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("Exception: {0}", e.ToString())); _client = null; return(new SynchronousAsyncSelectResult(e, asyncCallback, asyncState)); } ADXTrace.Instance.TraceInfo(TraceCategory.Application, "End"); return(new SynchronousAsyncSelectResult(selectResult, asyncCallback, asyncState)); }