예제 #1
0
 private void OnRetrieveDataMoreFields(TSGetDataMoreFieldsEventArgs e)
 {
     if (RetrieveDataMoreFieldsEvent != null)
     {
         RetrieveDataMoreFieldsEvent(this, e);
     }
 }
예제 #2
0
        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 -- 勾选的行,在已有数据中仍不存在的行 --
        }
예제 #3
0
        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 -- 在已有数据中仍不存在的行 --
        }