Exemple #1
0
        public void BeforeShowDataAssistant(object sender, InvokeDataAssistantHosterEventArgs args)
        {
            IInvokeDataAssistantHoster hoster = this.ClientRuleObject as IInvokeDataAssistantHoster;

            if (hoster != null)
            {
                if (tabCtlFilterMain.SelectedTabPage.Equals(tPageAdvanceFilter))
                {
                    args.PreFilterParameters = GetAdvanceQueryParameters(); //modify by aifang 2012-07-30 args.PreFilterParameters = _AdvanceFilter.GetQueryParameters();
                }
                else
                {
                    IPreFilterConditionCtl preFilter = _SimpleFilterControl as IPreFilterConditionCtl;
                    args.PreFilterParameters = preFilter.GetPreQueryParameters();
                }

                //校验当前列的限制列是否已有值
                var param = _DataElementCfgs[args.ClumnEditCfgInfo.Name].FilterLimits;
                if (param != null && param.Count > 0)
                {
                    foreach (var filter in param)
                    {
                        if (filter.Nullable)
                        {
                            continue;
                        }
                        if (args.PreFilterParameters != null && args.PreFilterParameters.Length > 0)
                        {
                            var limit = args.PreFilterParameters.Where(o => o.PropertyName.Equals(filter.Name)).ToList();
                            if (limit != null && limit.Count > 0)
                            {
                                continue;
                            }
                        }

                        string description = _Columns[filter.Name].Description;
                        throw new MB.Util.APPException(string.Format("请先选择{0}", description), APPMessageType.DisplayToUser);
                    }
                }

                hoster.BeforeShowDataAssistant(sender, args);
            }
        }
Exemple #2
0
        public void BeforeGetFilterData(object sender, InvokeDataAssistantHosterEventArgs args)
        {
            IInvokeDataAssistantHoster hoster = this.ClientRuleObject as IInvokeDataAssistantHoster;

            if (hoster != null)
            {
                if (tabCtlFilterMain.SelectedTabPage.Equals(tPageAdvanceFilter))
                {
                    args.PreFilterParameters = GetAdvanceQueryParameters(); //modify by aifang 2012-07-30 args.PreFilterParameters = _AdvanceFilter.GetQueryParameters();
                }
                else
                {
                    IPreFilterConditionCtl preFilter = _SimpleFilterControl as IPreFilterConditionCtl;
                    args.PreFilterParameters = preFilter.GetPreQueryParameters();
                }

                //校验当前列的限制列是否已有值
                var param = _DataElementCfgs[args.ClumnEditCfgInfo.Name].FilterLimits;
                if (param != null && param.Count > 0)
                {
                    foreach (var filter in param)
                    {
                        if (!filter.AllowFilterValue)
                        {
                            continue;
                        }
                        if (args.PreFilterParameters != null && args.PreFilterParameters.Length > 0)
                        {
                            var limit = args.PreFilterParameters.Where(o => o.PropertyName.Equals(filter.Name)).ToList();
                            if (limit != null && limit.Count > 0)
                            {
                                args.FilterParameters.Add(new Util.Model.QueryParameterInfo(filter.SourceName, limit[0].Value, filter.FilterCondition));
                            }
                        }
                    }
                }

                hoster.BeforeGetFilterData(sender, args);
            }
        }
        /// <summary>
        /// 根据查询条件获取数据。
        /// </summary>
        /// <param name="dataInDocType"></param>
        /// <param name="filterParameters"></param>
        /// <returns></returns>
        public System.Collections.IList GetFilterObjects(int dataInDocType, List <MB.Util.Model.QueryParameterInfo> filterParameters)
        {
            if (_InvokeFilterParentFormHoster != null)
            {
                InvokeDataAssistantHosterEventArgs arg = new InvokeDataAssistantHosterEventArgs(_ClientRule, _ClumnEditCfgInfo, _CurrentEditObject, filterParameters);
                _InvokeFilterParentFormHoster.BeforeGetFilterData(_InvokeParentControl, arg);
                if (arg.Cancel)
                {
                    return(null);
                }
            }
            try
            {
                if (_QueryObject != null)
                {
                    return(_QueryObject.GetFilterObjects(filterParameters.ToArray()));
                }
                if (_InvokeDataSourceDesc == null)
                {
                    IList lstDatas = null;
                    try
                    {
                        using (MB.Util.MethodTraceWithTime timeTrack = new MB.Util.MethodTraceWithTime(null))
                        {
                            lstDatas = _ClientRule.GetObjects((int)_ClientRule.MainDataTypeInDoc, filterParameters.ToArray());

                            var msg = string.Format("查询花费:{0} 毫秒,返回 {1} 记录", timeTrack.GetExecutedTimes(), lstDatas.Count);
                            MB.WinBase.AppMessenger.DefaultMessenger.Publish(QUERY_REFRESH_MSG_ID, msg);
                        };
                    }
                    catch (Exception ex)
                    {
                        throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, " GetObjects 出错!");
                    }
                    return(lstDatas);
                }

                string[]  desc = _InvokeDataSourceDesc.Method.Split(',');
                ArrayList pars = new ArrayList();
                if (desc.Length > 1)
                {
                    string[] ss = desc[1].Split(';');
                    foreach (var s in ss)
                    {
                        //判断是否为
                        pars.Add(MB.WinBase.AppEnvironmentSetting.Instance.ConvertSystemParamValue(s));
                    }
                }
                if (filterParameters != null && filterParameters.Count > 0)
                {
                    pars.Add(filterParameters.ToArray());
                }
                else
                {
                    if (_InvokeDataSourceDesc.ExistsFilterParams)
                    {
                        //判断调用的方法是否存在过滤的参数,如果存在需要进行特殊的处理(默认情况下存在)
                        List <MB.Util.Model.QueryParameterInfo> filterParam = new List <MB.Util.Model.QueryParameterInfo>();
                        filterParam.Add(new MB.Util.Model.QueryParameterInfo("1", "1", MB.Util.DataFilterConditions.Special));
                        pars.Add(filterParam.ToArray());
                    }
                }
                //object val = MB.Util.MyReflection.Instance.InvokeMethod(_ClientRule, desc[0], pars.ToArray());
                // object val = MB.Util.MyReflection.Instance.InvokeMethodByName(_ClientRule, desc[0], pars.ToArray());
                object val = null;
                try
                {
                    using (MB.Util.MethodTraceWithTime timeTrack = new MB.Util.MethodTraceWithTime(null))
                    {
                        val = MB.Util.MyReflection.Instance.InvokeMethod(_ClientRule, desc[0], pars.ToArray());

                        var msg = string.Format("查询花费:{0} 毫秒,返回 {1} 记录", timeTrack.GetExecutedTimes(), (val as IList).Count);
                        MB.WinBase.AppMessenger.DefaultMessenger.Publish(QUERY_REFRESH_MSG_ID, msg);
                    };
                }
                catch (Exception ex)
                {
                    throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, desc[0] + " 出错!");
                }

                return(val as IList);
            }
            catch (Exception ex)
            {
                throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, "调用方法 MB.WinClientDefault.QueryFilter.FrmGetObjectDataAssistant::GetFilterObjects  获取数据有误");
            }
            return(null);
        }