//加载对象数据 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()); } }
//加载对象数据 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); } }