/// <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);
            }
        }
Example #2
0
        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);
            }
        }