/// <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; }
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; }
/// <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); }