private void _load ( CJSRequestGetType getType, Params bioPrms, AjaxRequestDelegate callback, JsonStoreFilter locate, Int64? pageSize, Int64? startFrom, String selection ) { var v_selection = selection; var v_locate = locate; if (pageSize.HasValue) this.PageSize = pageSize.Value; if (startFrom.HasValue) this.StartFrom = startFrom.Value; if (this.AjaxMng == null) throw new EBioException("Свойство \"ajaxMng\" должно быть определено!"); if (String.IsNullOrEmpty(this.BioCode)) throw new EBioException("Свойство \"bioCode\" должно быть определено!"); this._doBeforLoadData(bla => { if (bla.Cancel) { return; } if (bioPrms != null) { if (this.BioParams == null) this.BioParams = bioPrms.Clone() as Params; else { this.BioParams.Clear(); this.BioParams = this.BioParams.Merge(bioPrms, true); } } else { if (this.BioParams == null) this.BioParams = new Params(); } var isMetadataObsolete = false; var isFirstLoad = false; this._detectIsFirstLoad(this.BioCode, this.BioParams, ref isMetadataObsolete, ref isFirstLoad); if (isFirstLoad) { this.StartFrom = 0; } this._lastRequestedBioCode = this.BioCode; JsonStoreSort sortDefinition = null; if (!isMetadataObsolete && (this.DS0 != null)) { var cv = (this.DS0 as ICollectionView); if (cv != null) sortDefinition = this._genJSSortDefinition(cv.SortDescriptions); } this._lastRequestedParams = (Params)this.BioParams.Clone(); var reqst = new JsonStoreRequestGet { BioCode = this.BioCode, getType = getType, BioParams = this.BioParams, Prms = null, Packet = new JsonStoreData { Limit = this.PageSize, Start = this.StartFrom, IsFirstLoad = isFirstLoad, IsMetadataObsolete = isMetadataObsolete, Locate = v_locate }, Sort = sortDefinition, selection = v_selection, Callback = (sndr, args) => { try { Type rowType = null; var rq = (JsonStoreRequest)args.Request; var rsp = args.Response as JsonStoreResponse; if (rsp != null) { if ((rsp.packet != null) && (rsp.packet.Rows != null)) { if (BioGlobal.Debug) { if (rsp.Ex != null) throw new EBioException("Unhandled exception!!!! silent:[" + rq.Silent + "]", rsp.Ex); } if (rq.Packet.IsMetadataObsolete) { this._metadata = rsp.packet.MetaData; var fldDefs = _creFldDefsRmt(this._metadata); rowType = this._creRowType(fldDefs); this.DS0 = this._creDSInst(rowType); } this._doOnJsonStoreResponseSuccess(rq, rsp); this._loadDS(rowType, rsp); this._doOnJsonStoreDSLoaded(this.DS0, rq, rsp); if (rq.Packet.Locate != null) this._lastLocatedRow = this._locateInternal(rq.Packet.Locate); } else { if (BioGlobal.Debug) { var m = "Bad response: "; if (rsp.packet == null) m = m + "rsp.packet=null;"; else if (rsp.packet.Rows == null) m = m + "rsp.packet.rows=null;"; throw new EBioException(m); } } } else { //if (BioGlobal.Debug) { // var biorsp = args.Response as BioResponse; // if (biorsp == null) // throw new EBioException("Bad response: biorsp=null"); //} } } finally { this._doOnAfterLoadData(args); if (callback != null) callback(this, args); } } }; this.AjaxMng.Request(reqst); }); }
/// <summary> /// Инициализация /// </summary> /// <param name="request">Описание web-запроса</param> public virtual void Init(JsonStoreRequestGet request) { var v_rqget = request; if (v_rqget == null) throw new Exception("Для данного вида запроса параметер request должен быть типа CJsonStoreRequestGet, а на входе " + request.GetType().Name + "."); this.Init(v_rqget.Packet, v_rqget.BioParams, v_rqget.Filter, v_rqget.Sort, v_rqget.selection, request.Timeout); }