//加载对象数据
        private void loadObjectData(MB.Util.Model.QueryParameterInfo[] queryParams)
        {
            if (_AsynQueryRule == null)
            {
                throw new MB.Util.APPException("在加载浏览窗口<DefaultViewForm>时 需要配置对应的ClientRule 类!");
            }

            if (!tabCtlMain.SelectedTab.Equals(tPageDynamicGroup))
            {
                //在非动态聚组查询的条件下

                //特殊说明 2009-02-20 在这里需要增加 RefreshLookupDataSource 以便在加载数据ID 时能得到对应的描述信息。
                using (MB.Util.MethodTraceWithTime timeTrack = new MethodTraceWithTime(null)) {
                    using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                        using (AsynLoadDataHelper asynCall = new AsynLoadDataHelper(_AsynQueryRule, this.IsTotalPageDisplayed, _IsQueryAll)) {
                            asynCall.WorkerCompleted += new EventHandler <RunWorkerCompletedEventArgs>(asynCall_WorkerCompleted);
                            asynCall.RunLoad(this, queryParams);
                        }
                    }
                    _ExcuteTime = timeTrack.GetExecutedTimes();
                }
            }
            else
            {
                var dynamicGroupSetting = _DynamicGroupSettings;
                if (dynamicGroupSetting == null)
                {
                    throw new APPException("动态聚组查询,聚组条件不能为空");
                }
                DataSet ds = _AsynQueryRule.GetDynamicGroupQueryData(dynamicGroupSetting, queryParams);
                ucDynamicGroupResultInQuery.BindDynamicResultQueryResult(ds, _AsynQueryRule.ClientLayoutAttribute.UIXmlConfigFile);
            }
        }
        private void exportAllMenuItem_Click(object sender, EventArgs e)
        {
            _AsynQueryRule.CurrentQueryBehavior.PageIndex = 0;
            _AsynQueryRule.CurrentQueryBehavior.PageSize  = Int32.MaxValue;

            using (MB.Util.MethodTraceWithTime timeTrack = new MethodTraceWithTime(null)) {
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                    using (AsynLoadDataHelper asynCall = new AsynLoadDataHelper(_AsynQueryRule, this.IsTotalPageDisplayed, _IsQueryAll)) {
                        asynCall.WorkerCompleted += new EventHandler <RunWorkerCompletedEventArgs>(asynCall_WorkerCompleted_ExportAll);
                        asynCall.RunLoad(this, _QueryParamsFromQueryFilterForm);
                    }
                }
                double excuteTime = timeTrack.GetExecutedTimes();
                MB.Util.TraceEx.Write("导出全部使用的时间是 (毫秒): {0}", excuteTime.ToString());
            }
        }
Exemple #3
0
        //加载对象数据
        private void loadObjectData(MB.Util.Model.QueryParameterInfo[] queryParams)
        {
            if (_AsynQueryRule == null)
            {
                throw new MB.Util.APPException("在加载浏览窗口<DefaultAsynCustomQueryView>时 需要配置对应的ClientRule 类!");
            }

            //特殊说明 2009-02-20 在这里需要增加 RefreshLookupDataSource 以便在加载数据ID 时能得到对应的描述信息。
            using (MB.Util.MethodTraceWithTime timeTrack = new MethodTraceWithTime(null)) {
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                    using (AsynLoadDataHelper asynCall = new AsynLoadDataHelper(_AsynQueryRule, this.IsTotalPageDisplayed, _IsQueryAll)) {
                        asynCall.WorkerCompleted += new EventHandler <RunWorkerCompletedEventArgs>(asynCall_WorkerCompleted);
                        asynCall.RunLoad(this, queryParams);
                    }
                }
                _ExcuteTime = timeTrack.GetExecutedTimes();
            }
        }
        void asynCall_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                return;
            }
            if (e.Error != null)
            {
                System.Threading.Thread.Sleep(100);
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(e.Error);
                System.Threading.Thread.Sleep(100);
                return;
            }
            if (e.Result == null)
            {
                MB.WinBase.MessageBoxEx.Show("获取数据有误,请重试!");
                return;
            }
            _CurrentQueryData = e.Result as DataSet;
            _CurrentQueryData.Tables[0].TableName = "Table1";

            _BindingSource            = new MB.WinBase.Binding.BindingSourceEx();
            _BindingSource.DataSource = _CurrentQueryData;
            _BindingSource.DataMember = "Table1";
            bool isSame = checkTableStructIsSame(grdCtlMain.DataSource, _BindingSource);

            AbstractClientRuleQuery clientRuleQuery = _AsynQueryRule as AbstractClientRuleQuery;

            if (clientRuleQuery != null &&
                clientRuleQuery.ReSetContextMenu != null &&
                clientRuleQuery.ReSetContextMenu.MenuItems.Count > 0)
            {
                grdCtlMain.ContextMenu = clientRuleQuery.ReSetContextMenu;
            }


            if (grdCtlMain.DataSource == null || !isSame || _IsReloadData)
            {
                Dictionary <string, ColumnPropertyInfo> bindingPropertys = XtraGridDynamicHelper.Instance.GetDynamicColumns(_AsynQueryRule);

                MB.XWinLib.XtraGrid.XtraGridHelper.Instance.BindingToXtraGrid(grdCtlMain, _BindingSource,
                                                                              bindingPropertys,
                                                                              _AsynQueryRule.UIRuleXmlConfigInfo.ColumnsCfgEdit,
                                                                              _AsynQueryRule.ClientLayoutAttribute.UIXmlConfigFile, true);

                var gridView = grdCtlMain.DefaultView as DevExpress.XtraGrid.Views.Grid.GridView;
                gridView.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None;

                //每次重新加载完以后,清空动态列的条件,比避免重复加载
                _IsReloadData = false;

                //加载导出全部的右键菜单
                this.grdCtlMain.ContextMenu.MenuItems.Add("导出全部", new EventHandler(exportAllMenuItem_Click));
            }
            else
            {
                grdCtlMain.DataSource = _BindingSource;
            }

            var count = _CurrentQueryData == null ? 0 : _CurrentQueryData.Tables[0].Rows.Count;
            var msg   = string.Format("查询花费:{0} 毫秒,返回 {1} 记录,查询时间:{2}", _ExcuteTime, count, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

            AppMessenger.DefaultMessenger.Publish(QUERY_REFRESH_MSG_ID, msg);


            validatedPageControl(count);

            #region  对下一页重新控制
            //首先看消息头返回的记录是否大于页总记录数。消息头的记录数是基于数据库的查询记录数
            //有的情况下,中间层还会做额外的过滤导致返回记录数小于,每页记录数,但其实数据库大于每页记录数
            //如果消息头没有返回记录,则根据客户端判断
            AsynLoadDataHelper asynLoader = sender as AsynLoadDataHelper;
            if (asynLoader != null && !_IsQueryAll)
            {
                if (asynLoader.TotalRecordCount > 0)
                {
                    lnkNextPage.Enabled = asynLoader.TotalRecordCount > _AsynQueryRule.CurrentQueryBehavior.PageSize;
                }
            }
            #endregion



            //如果返回的记录数为0,则清空自定义网格汇总信息
            if (count > 0 &&
                _AsynQueryRule.ClientLayoutAttribute != null &&
                _AsynQueryRule.ClientLayoutAttribute.IsCustomFooterSummary)
            {
                //绑定自定义网格脚汇总
                _CustomFootSummaryCols = getCustomSummaryColValues(_QueryParamsFromQueryFilterForm);
            }
        }