Beispiel #1
0
        /// <summary>
        /// 执行事件
        /// </summary>
        /// <param name="target"></param>
        /// <param name="text"></param>
        private static void InvokeEvent(IControl target, string text)
        {
            EventDecoder            ed        = new EventDecoder();
            List <DecoderOfControl> listEvent = ed.DecodeEvent(text);

            foreach (DecoderOfControl docObj in listEvent)
            {
                try
                {
                    SetCurrentControlList(target);
                    int ctrlIndex = CurrentControlList.FindIndex
                                        (p => (p as FrameworkElement).Name.Equals(ConfigManagerSection.ControlNamePrefix + docObj.CtrlId.ToString()));
                    if (ctrlIndex == -1 && !docObj.Type.Equals(EventType.SqlType))
                    {
                        return;
                    }
                    else
                    {
                        CallMethodByPropertyName(CurrentControlList[ctrlIndex], docObj);
                    }
                }
                catch
                {
                    MessageBox.Show("执行事件出错--" + text);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 处理sql请求
        /// </summary>
        /// <param name="value"></param>
        /// <param name="ic"></param>
        /// <returns></returns>
        public static bool dealWithSqlRequest(DecoderOfControl value, IControl ic)
        {
            string        sqlStr = @FormatSql(value.RightDirectValue.ToString(), ic);
            SqlController cnTemp = new SqlController();

            sqlStr = FormatSql(sqlStr, ic);
            var result = cnTemp.ExcuteSqlWithReturn(sqlStr);

            if (result.error_code.Equals("1"))
            {
                return(false);
            }
            string resultControlId       = string.Empty;
            string resultControlProperty = string.Empty;

            if (Regex.IsMatch(result.to, @"\d+.d\d+"))
            {
                resultControlId       = GetStringExceptChar(result.to).Split('.')[0];
                resultControlProperty = GetStringExceptChar(result.to).Split('.')[1];
            }
            else
            {
                resultControlId = result.to;
            }
            if (!string.IsNullOrEmpty(resultControlId))
            {
                int ctrlIndex = CurrentControlList.FindIndex(p => (p as FrameworkElement).Name.Equals(ConfigManagerSection.ControlNamePrefix + resultControlId));
                SetValue(CurrentControlList[ctrlIndex], result.data, resultControlProperty);
            }
            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// 执行事件
        /// </summary>
        /// <param name="docObj"></param>
        /// <param name="ic"></param>
        public static void ExcuteOneEvent(DecoderOfControl docObj, IControl ic)
        {
            SetCurrentControlList(ic);
            int ctrlIndex = CurrentControlList.FindIndex
                                (p => (p as FrameworkElement).Name.Equals(ConfigManagerSection.ControlNamePrefix + docObj.CtrlId.ToString()));

            if (ctrlIndex == -1 && !docObj.Type.Equals(EventType.SqlType))
            {
                return;
            }
            else
            {
                CallMethodByPropertyName(CurrentControlList[ctrlIndex], docObj);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 事件里面的方法
        /// </summary>
        /// <param name="control"></param>
        /// <param name="value"></param>
        private static void CallMethodByPropertyName(IControl control, DecoderOfControl value)
        {
            if (value.Type.Equals(EventType.SqlType))
            {
                dealWithSqlRequest(value, control);
                return;
            }

            object controlValue = null;

            if (value.RightDirectValue is DecoderOfControl)
            {
                DecoderOfControl rightValue   = value.RightDirectValue as DecoderOfControl;
                IControl         rightControl = CurrentControlList.First(p => rightValue.CtrlId == ((p as FrameworkElement).Tag as ControlDetailForPage).ctrl_id);
                controlValue = GetValueWithParameter(rightControl, rightValue.LeftCtrlProperty, rightValue.Patameter);
            }
            else
            {
                controlValue = object.Equals(value.RightDirectValue, null) ? string.Empty : value.RightDirectValue;
            }
            SetValue(control, controlValue, value.LeftCtrlProperty);
        }
Beispiel #5
0
        /// <summary>
        /// 格式化sql,主要就是为了讲里面的参数赋值
        /// </summary>
        /// <param name="inText"></param>
        /// <returns></returns>
        public static string FormatSql(string inText, IControl ic)
        {
            SetCurrentControlList(ic);
            string pattern   = @"[{]\d+.d\d+[}]";
            string resultSql = inText.Clone().ToString();

            foreach (var data in Regex.Matches(inText, pattern))
            {
                string ctrlId       = data.ToString().Substring(1, data.ToString().Length - 2).Split('.')[0];
                string ctrlProperty = data.ToString().Substring(1, data.ToString().Length - 2).Split('.')[1];

                try
                {
                    int controlIndex = CurrentControlList.FindIndex(p => ctrlId.Equals(((p as FrameworkElement).Tag as ControlDetailForPage).ctrl_id.ToString()));
                    if (controlIndex != -1)
                    {
                        IControl rightControl = CurrentControlList[controlIndex];
                        string   paramter     = GetValue(rightControl, ctrlProperty).ToString();
                        resultSql = resultSql.Replace(data.ToString(), paramter);
                    }
                    else
                    {
                        resultSql = resultSql.Replace(data.ToString(), string.Empty);
                    }
                }
                catch
                {
                    resultSql = resultSql.Replace(data.ToString(), string.Empty);
                }
            }

            string secondPattern = @"[{]\d+.a\d+[(]\w+[)][}]";

            foreach (var data in Regex.Matches(inText, secondPattern))
            {
                string pairStr      = data.ToString().Substring(1, data.ToString().Length - 2);
                string parameter    = Regex.Match(pairStr.Split('.')[1], @"\((.*?)\)").Groups[1].ToString();
                string ctrlProperty = pairStr.Split('.')[1].Replace(Regex.Match(pairStr.Split('.')[1], @"\((.*?)\)").Groups[0].ToString(), string.Empty);
                string ctrlId       = pairStr.Split('.')[0];

                try
                {
                    int controlIndex = CurrentControlList.FindIndex(p => CommonConverter.StringToInt(ctrlId) == ((p as FrameworkElement).Tag as ControlDetailForPage).ctrl_id);
                    if (controlIndex != -1)
                    {
                        IControl rightControl = CurrentControlList[controlIndex];
                        string   paramter     = GetValueWithParameter(rightControl, ctrlProperty, parameter).ToString();
                        resultSql = resultSql.Replace(data.ToString(), paramter);
                    }
                    else
                    {
                        resultSql = resultSql.Replace(data.ToString(), string.Empty);
                    }
                }
                catch
                {
                    resultSql = resultSql.Replace(data.ToString(), string.Empty);
                }
            }
            return(resultSql);
        }