private void OnRetrieveDataMoreFields(TSGetDataMoreFieldsEventArgs e) { if (RetrieveDataMoreFieldsEvent != null) { RetrieveDataMoreFieldsEvent(this, e); } }
public virtual void RetrieveSelectedData(string selectFieldName, List <string> queryMoreFields) { #region -- 勾选的行,并而在已有数据中已存在的行,读取更多所需的字段 -- bool bNeedQuery; string strMoreFields; List <string> lstMoreFields; GetQueryMoreFields(queryMoreFields, out bNeedQuery, out strMoreFields, out lstMoreFields); if (bNeedQuery) { string strMoreFieldsCriteria = GetSelectedDataMoreFieldsCriteria(selectFieldName); if (strMoreFieldsCriteria != "") { TSGetDataMoreFieldsEventArgs args = new TSGetDataMoreFieldsEventArgs(mTag, strMoreFieldsCriteria, strMoreFields); OnRetrieveDataMoreFields(args); DataTable dtResult = args.ReturnTable; MergeToResult(0, mdtSource.Rows.Count, dtResult); } } #endregion -- 勾选的行,并而在已有数据中已存在的行,读取更多所需的字段 -- #region -- 勾选的行,在已有数据中仍不存在的行 -- int needGetRowsCount; List <int> indexes; string strPageCriteria = GetSelectedDataCriteria(selectFieldName, out needGetRowsCount, out indexes); if (needGetRowsCount > 0) { TSGetPageDataEventArgs args = new TSGetPageDataEventArgs(strPageCriteria, needGetRowsCount, mTag); this.OnRetrievePageData(args); DataTable dtPage = args.PageTable; if (dtPage == null) { mRange.AddIndexes(indexes); return; } MergeToResult(0, mdtSource.Rows.Count, dtPage); mRange.AddIndexes(indexes); } #endregion -- 勾选的行,在已有数据中仍不存在的行 -- }
public virtual void RetrieveAllData(List <string> queryMoreFields) { int iRemainCount; List <Point> lstPoint = mRange.GetRemainRange(out iRemainCount); int iQueryAllRowCount = 200; #region -- 已有数据中已存在的行,读取更多所需的字段 -- if (iRemainCount <= iQueryAllRowCount) { bool bNeedQuery; string strMoreFields; List <string> lstMoreFields; GetQueryMoreFields(queryMoreFields, out bNeedQuery, out strMoreFields, out lstMoreFields); if (bNeedQuery) { string strMoreFieldsCriteria = GetContainDataMoreFieldsCriteria(); if (strMoreFieldsCriteria != "") { TSGetDataMoreFieldsEventArgs args = new TSGetDataMoreFieldsEventArgs(mTag, strMoreFieldsCriteria, strMoreFields); OnRetrieveDataMoreFields(args); DataTable dtResult = args.ReturnTable; MergeToResult(0, mdtSource.Rows.Count, dtResult); // 将本次新增的字段加入记录中,RetrieveAllData 才需要这样做 if (lstMoreFields != null) { mlstQueriedFields.AddRange(lstMoreFields); } } } } #endregion -- 已有数据中已存在的行,读取更多所需的字段 -- #region -- 在已有数据中仍不存在的行 -- if (iRemainCount <= iQueryAllRowCount) { for (int i = 0, j = lstPoint.Count; i < j; i++) { Point range = lstPoint[i]; int iCount = range.Y - range.X + 1; if (iCount <= 0) { continue; } string strPageCriteria = GetPageCriteria(range.X, iCount); TSGetPageDataEventArgs args = new TSGetPageDataEventArgs(strPageCriteria, iCount, mTag); this.OnRetrievePageData(args); DataTable dtPage = args.PageTable; if (dtPage == null) { mRange.AddRange(range.X, iCount); return; } MergeToResult(range.X, iCount, dtPage); mRange.AddRange(range.X, iCount); } } else { TSGetDataEventArgs args = new TSGetDataEventArgs(mTag); OnRetrieveAllData(args); DataTable dtResult = args.ReturnTable; // 如果有合计行,应该在 RetrieveAllDataEvent 事件中同时处理 mdtSource.Clear(); mdtSource.Merge(dtResult); mRange.ResetRange(mdtSource.Rows.Count - (mbHasSumLine ? 2 : 1)); mRange.AddRange(0, mRange.MaxIndex + 1); mlstRemovedRows.Clear(); } #endregion -- 在已有数据中仍不存在的行 -- }