/// <summary> /// 返回需要自定义的汇总列 /// </summary> /// <returns></returns> private Dictionary <string, object> getCustomSummaryColValues(MB.Util.Model.QueryParameterInfo[] queryParams) { List <string> colsToGet = new List <string>(); Dictionary <string, object> customSummaryCols = new Dictionary <string, object>(); Dictionary <string, ColumnPropertyInfo> bindingPropertys = LayoutXmlConfigHelper.Instance.GetColumnPropertys(_AsynQueryRule.ClientLayoutAttribute.UIXmlConfigFile); foreach (ColumnPropertyInfo colInfo in bindingPropertys.Values) { if (colInfo.IsCustomFootSummary) { colsToGet.Add(colInfo.Name); } } AbstractClientRuleQuery clientRule = _AsynQueryRule as AbstractClientRuleQuery; if (clientRule != null) { return(clientRule.GetCustomSummaryColValues(colsToGet.ToArray(), queryParams)); } else { return(null); } }
private 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"; AbstractClientRuleQuery clientRuleQuery = _AsynQueryRule as AbstractClientRuleQuery; 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); loadCustomViewControl(); }
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); } }