/// <summary>
        /// 生成条件样式
        /// </summary>
        /// <param name="info">XtraStyleConditionInfo</param>
        /// <param name="gridView">GridView</param>
        /// <returns></returns>
        public static StyleFormatCondition CreateFormatCondition(XtraStyleConditionInfo info, GridView gridView)
        {
            var col = gridView.Columns.ColumnByFieldName(info.ColumnName);

            if (col == null)
            {
                MB.Util.TraceEx.Write("Style Format condition 列名称的配置,在数据源中找不到对应的列,请检查。", MB.Util.APPMessageType.SysWarning);
                return null;
            }

            col.AppearanceCell.Options.UseTextOptions = true;
            DevExpress.XtraGrid.StyleFormatCondition formatCondition = new StyleFormatCondition(info.Condition,
            col, info.StyleName, info.Value, info.Value2, info.ApplyToRow);

            if (!string.IsNullOrEmpty(info.Expression))
            {
                formatCondition.Condition = FormatConditionEnum.Expression;
                formatCondition.Expression = info.Expression;
            }
            formatCondition.Tag = info.Name;
            formatCondition.Appearance.Font = info.ForeFont;
            formatCondition.Appearance.ForeColor = info.ForeColor;
            formatCondition.Appearance.BackColor = info.BackColor;
            
            return formatCondition;
        }
Beispiel #2
0
        private void butAddCondition_Click(object sender, System.EventArgs e)
        {
            string cName = getConditionName(_CurrentOptionsInfo.StyleConditions);
            XtraStyleConditionInfo cInfo = new XtraStyleConditionInfo(cName);

            cInfo.Tag = _GridView;
            _CurrentOptionsInfo.StyleConditions.Add(cInfo);
            lstCondition.Items.Add(cInfo);
            lstCondition.SelectedItem = cInfo;
        }
Beispiel #3
0
        /// <summary>
        /// 获取设置的样式集合
        /// </summary>
        /// <param name="parentNode"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        private List <MB.XWinLib.DesignEditor.XtraStyleConditionInfo> createStyleInfoList(XmlNode parentNode, object obj)
        {
            List <MB.XWinLib.DesignEditor.XtraStyleConditionInfo> nodeStylesList = new List <MB.XWinLib.DesignEditor.XtraStyleConditionInfo>();

            try
            {
                foreach (XmlNode node in parentNode.ChildNodes)
                {
                    System.Xml.XmlAttributeCollection nodeAttList = node.Attributes;
                    MB.XWinLib.DesignEditor.XtraStyleConditionInfo newStyleInfo = new XtraStyleConditionInfo();
                    Type           t      = newStyleInfo.GetType();
                    PropertyInfo[] pInfos = t.GetProperties();

                    if (newStyleInfo == null)
                    {
                        continue;
                    }
                    foreach (XmlNode xmlNode in node.ChildNodes)
                    {
                        PropertyInfo propValue = t.GetProperty(xmlNode.Name);
                        if (propValue == null)
                        {
                            continue;
                        }
                        if (string.Compare(propValue.PropertyType.Name, "string", true) == 0)
                        {
                            propValue.SetValue(newStyleInfo, xmlNode.InnerText, null);
                        }
                        else if (propValue.PropertyType.IsEnum && string.Compare(xmlNode.Name, "Condition", true) == 0)
                        {
                            propValue.SetValue(newStyleInfo, FromName(xmlNode.InnerText), null);
                        }
                        else
                        {
                            switch (propValue.PropertyType.Name)
                            {
                            case "Color":
                                // 原来的代码保存的是Argb,读取的是FormName.改成一致使用Argb.XiaoMin
                                int argb = 0;
                                if (int.TryParse(xmlNode.InnerText, out argb))
                                {
                                    propValue.SetValue(newStyleInfo, Color.FromArgb(argb), null);
                                }
                                else
                                {
                                    // 写入日志,颜色转换有误
                                }
                                break;

                            case "Font":
                                object f = createFont(xmlNode);
                                if (f != null)
                                {
                                    propValue.SetValue(newStyleInfo, f, null);
                                }
                                break;

                            case "Image":
                                if (!string.IsNullOrEmpty(xmlNode.InnerText))
                                {
                                    propValue.SetValue(newStyleInfo, MB.Util.MyConvert.Instance.Base64StringToImage(xmlNode.InnerText), null);
                                }
                                break;

                            default:
                                if (propValue.PropertyType.IsValueType)
                                {
                                    propValue.SetValue(newStyleInfo, Convert.ChangeType(xmlNode.InnerText, propValue.PropertyType), null);
                                }
                                else
                                {
                                    Debug.Assert(false, "类型" + xmlNode.Name + "还没有处理.");
                                }
                                break;
                            }
                        }
                    }
                    nodeStylesList.Add(newStyleInfo);
                }
            }
            catch (TypeLoadException)
            {
            }
            return(nodeStylesList);
        }