示例#1
0
 private WidgetModel ConvertToWidget(AppFunction func, WidgetModel userWidget)
 {
     userWidget.Id    = func.Id;
     userWidget.Title = ResHelper.GetStr(func.Name);
     //将参数赋值给其他可能的属性
     foreach (var p in func.Arguments)
     {
         RefHelper.SetValue(userWidget, p.Key, p.Value);
     }
     return(userWidget);
 }
示例#2
0
        void AssignNameValue(object t)
        {
            var type = t.GetType();

            RefHelper.SetValue(t, "Name", t.GetType().Name);
            foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                if (prop.PropertyType == typeof(string) && prop.Name != "Name")
                {
                    prop.SetValue(t, prop.Name, null);
                }
            }
        }
示例#3
0
        /// <summary>
        /// 从Profile中获取并设置本窗体的指定控件的属性值,如果为空则设置默认值
        /// </summary>
        /// <param name="propertyName">用'.'号分隔的控件及属性名称 </param>
        /// <param name="defaultValue">默认值</param>
        public void Load(string propertyName, string defaultValue)
        {
            TypeAndValue value = GetContextValue(propertyName);

            if (String.IsNullOrEmpty(value.Value))
            {
                value.Value = defaultValue;
            }
            //  if (String.IsNullOrEmpty(value.Value)) return;
            string[] propertyNames = propertyName.Split('.');
            object   obj           = FindObject(propertyNames);

            if (obj == null)
            {
                return;
            }
            RefHelper.SetValue(obj, propertyNames[propertyNames.Length - 1], value.Value, RefHelper.LoadType(value.TypeName));
        }
示例#4
0
 /// <summary>
 /// 将Form表单中的数据导入实体对象中的同名属性
 /// </summary>
 /// <param name="form">表单数据</param>
 /// <param name="model">实体对象</param>
 public static void AssignFormValues(this NameValueCollection form, object model)
 {
     //添加其他程序子类中的特殊属性
     foreach (string key in form.Keys)
     {
         var prop = model.GetType().GetProperty(key);
         if (prop != null)
         {
             if (prop.PropertyType == typeof(bool))
             {
                 //在复选框时,勾选会传回两个值: true,false; 所以要分辨
                 RefHelper.SetValue(model, key, CommOp.ToStr(form[key]).Split(',').First());
             }
             else
             {
                 RefHelper.SetValue(model, key, CommOp.ToStr(form[key]));
             }
         }
     }
 }
        /// <summary>
        /// 处理一个查询定义节点。依次递归子节点循环。
        /// </summary>
        /// <param name="node">当前节点</param>
        /// <param name="item">查询项集合</param>
        /// <param name="odtObj"></param>
        /// <param name="exp">查询表达式</param>
        /// <param name="parameters">查询表达式参数</param>
        private void ProcessQueryNode(AdvQueryNode node, AdvQueryItem item, object odtObj, ref string exp, ref IList <object> parameters)
        {
            if (node == null)
            {
                return;
            }

            //查询当前节点的子节点
            List <AdvQueryNode> children = item.Nodes.Where(t => t.ParentId == node.Id).ToList();

            if (children.Count == 0)
            {
                //没有子节点,这是一个表达式节点

                if (node.Operator.IsEmpty())
                {
                    return;
                }

                string p = "@" + parameters.Count;

                if (node.Operator.Trim().ToUpper().Equals("LIKE"))
                {
                    exp = exp + node.Expression.Trim() + ".Contains(" + p + ") ";
                }
                else if (node.Operator.Trim().ToUpper().Equals("NOT LIKE"))
                {
                    exp = exp + " !" + node.Expression.Trim() + ".Contains(" + p + ") ";
                }
                else
                {
                    exp = exp + " (" + node.Expression.Trim() + node.Operator + p + ") ";
                }

                RefHelper.SetValue(odtObj, node.Expression, node.Value);
                parameters.Add(RefHelper.GetValue(odtObj, node.Expression));

                return;
            }
            else
            {
                //有子节点,这是一个逻辑运算符节点

                exp = exp + "(";
                int i = 0;
                foreach (AdvQueryNode child in children)
                {
                    //子节点是逻辑运算符
                    if (child.Type.ToLower() == "operator")
                    {
                        if (!item.Nodes.Exists(t => t.ParentId == child.Id))
                        {
                            continue;
                        }
                    }

                    if (i > 0)
                    {
                        exp = exp + " " + node.Expression + " ";
                    }
                    //递归子节点循环。
                    ProcessQueryNode(child, item, odtObj, ref exp, ref parameters);

                    i++;
                }
                exp = exp + ")";
            }
        }
示例#6
0
        /// <summary>
        /// 保存多语言的文本信息
        /// </summary>
        /// <param name="dataService">当前的数据服务</param>
        /// <param name="e">数据实体对象</param>
        /// <param name="t">业务实体对象</param>
        public void SaveLanguages(EFAuditDataService <TEntity> dataService, TEntity e, TModel t)
        {
            var me = e as IMultiLanguage;

            if (me == null)
            {
                return;
            }
            ModelRule modelRule  = ModelRule.Get <TModel>();
            string    entityType = typeof(TEntity).Name;
            var       langs      = ResHelper.GetUsedCultureNames().Select(l => l.ToLower()).ToArray();

            if (me.LangTexts == null)
            {
                me.LangTexts = dataService.GetContext().Set <Sys_DataLanguage>().Where(d => d.BillId == e.Id && d.BillType == entityType).ToList();
            }
            var sysLangs = me.LangTexts;

            foreach (var rule in modelRule.SingleRules.Where(r => r.DataType == ExtDataType.MultiLanguage))
            {
                //先处理主文本框name不带语言后缀的表单值,表示是当前语言
                string langVal     = HttpContext.Current.Request.Form[rule.Name];
                string currentLang = ResHelper.CurrentCultureName.ToLower();
                var    langEntity  = sysLangs.FirstOrDefault(l => l.Language == currentLang);
                if (langEntity == null)
                {
                    langEntity = new Sys_DataLanguage
                    {
                        BillId   = e.Id,
                        BillType = entityType,
                        Language = currentLang,
                        Name     = rule.Name,
                        Text     = langVal
                    };
                    dataService.MarkState(langEntity, EntityState.Added);
                }

                else if (langVal != langEntity.Text)
                {
                    langEntity.Text = langVal;
                    dataService.MarkState(langEntity, EntityState.Modified);
                }

                RefHelper.SetValue(e, rule.Name, langVal);

                //再处理下拉列表中的文本框name带语言后缀的表单值
                foreach (var lang in langs.Where(l => l != currentLang))
                {
                    langVal    = HttpContext.Current.Request.Form[rule.Name + "-" + lang];
                    langEntity = sysLangs.FirstOrDefault(l => l.Language == lang);
                    if (langEntity == null)
                    {
                        langEntity = new Sys_DataLanguage
                        {
                            BillId   = e.Id,
                            BillType = entityType,
                            Language = lang,
                            Name     = rule.Name,
                            Text     = langVal
                        };
                        dataService.MarkState(langEntity, EntityState.Added);
                    }
                    else if (langVal != langEntity.Text)
                    {
                        langEntity.Text = langVal;
                        dataService.MarkState(langEntity, EntityState.Modified);
                    }
                }
            }
        }