/// <summary> /// 在DrectSoftWordbooks.XML中根据指定的字典名搜索定义数据,创建字典实例 /// XML文件的数据要符合Wordbook.XSD的定义。下面的处理流程是按XSD的定义进行的。 /// </summary> /// <param name="name">字典名称</param> protected BaseWordbook(string name) { Schema.Wordbook source = WordbookStaticHandle.GetSourceWordbookByName(name); if (String.IsNullOrEmpty(source.WordbookName)) { throw new ArgumentException("没有正确初始化字典,请检查基础数据"); } // 开始处理字典的属性 _wordbookName = source.WordbookName; _caption = source.Caption; _querySentence = PersistentObjectFactory.GetQuerySentenceByName(source.QuerySentence); _codeField = source.CodeField; _nameField = source.NameField; _queryCodeField = source.QueryCodeField; _codeFieldIsString = source.CodeFieldIsString; // 过滤参数 _parameters = new FilterParameterCollection(); _showStyles = new Collection <GridColumnStyleCollection>(); _defaultFilterFields = new Collection <string>(); if (source.FilterFieldCollection != null) { foreach (string field in source.FilterFieldCollection) { _defaultFilterFields.Add(field); } } if (source.ParameterCollection != null) { _parameters.AddRange(source.ParameterCollection); } GridColumnStyleCollection columnStyle; foreach (GridColumnStyle[] style in source.ViewStyleCollection) { columnStyle = new GridColumnStyleCollection(); columnStyle.AddRange(style); _showStyles.Add(columnStyle); } // 下列属性使用默认值 SelectedStyleIndex = 0; ExtraCondition = ""; _currentMatchFields = new Collection <string>(); foreach (string field in _defaultFilterFields) { _currentMatchFields.Add(field); } }
/// <summary> /// 用指定的SQL语句等信息创建SQL字典类实例。 /// 字段的显示名称、显示哪些列、列宽等信息在columnStyles中指定 /// </summary> /// <param name="uniqueName">局部唯一的名称</param> /// <param name="query">查询语句</param> /// <param name="codeField">代码字段名</param> /// <param name="nameField">名称字段名</param> /// <param name="columnStyles">字段的显示名称、显示哪些列、列宽等信息</param> public SqlWordbook(string uniqueName, string query, string codeField, string nameField, GridColumnStyleCollection columnStyles) : base() { Debug.Assert(uniqueName != null, "类名不能为NULL"); Debug.Assert(uniqueName.Length > 0, "类名不能为空"); WordbookName = uniqueName; Caption = WordbookName; ExtraCondition = ""; if (query.Length == 0) { throw new ArgumentNullException("必须指定查询语句"); } QuerySentence = query; if (codeField.Length == 0) { throw new ArgumentNullException("必须指定代码字段"); } CodeField = codeField; QueryCodeField = CodeField; if (nameField.Length == 0) { throw new ArgumentNullException("必须指定名称字段"); } NameField = nameField; DefaultFilterFields = new Collection <string>(); // 使用默认的代码列和名称列进行过滤 DefaultFilterFields.Add(codeField); DefaultFilterFields.Add(nameField); CurrentMatchFields = new Collection <string>(); foreach (string field in DefaultFilterFields) { CurrentMatchFields.Add(field); } Parameters = new FilterParameterCollection(); ShowStyles = new Collection <GridColumnStyleCollection>(); ShowStyles.Add(columnStyles); SelectedStyleIndex = 0; // Sql字典默认为不缓存数据 CacheTime = -1; _useSqlStatement = true; //_bookData = null; //m_DrawConditions = new Collection<CustomDrawSetting>(); }
/// <summary> /// 用指定的字符串集合创建List型字典类实例 /// </summary> /// <param name="uniqueName">局部唯一的名称</param> /// <param name="valueList">用来创建类的字符串集合</param> public ListWordbook(string uniqueName, Collection <string> valueList) : base() { Debug.Assert(uniqueName != null, "类名不能为NULL"); Debug.Assert(uniqueName.Length > 0, "类名不能为空"); WordbookName = uniqueName; Caption = WordbookName; //_name = "List字典"; if (valueList != null) { _items = new Collection <string>(valueList); } else { _items = new Collection <string>(); } ExtraCondition = ""; QuerySentence = ""; // 下列属性的设置不能修改,其它地方处理时可能会默认这些属性的值没有变过 CodeField = "name"; NameField = "name"; QueryCodeField = CodeField; CodeFieldIsString = true; DefaultFilterFields = new Collection <string>(); DefaultFilterFields.Add("xh"); DefaultFilterFields.Add("py"); DefaultFilterFields.Add("wb"); DefaultFilterFields.Add("name"); CurrentMatchFields = new Collection <string>(); foreach (string field in DefaultFilterFields) { CurrentMatchFields.Add(field); } Parameters = new FilterParameterCollection(); ShowStyles = new Collection <GridColumnStyleCollection>(); ShowStyles.Add(new GridColumnStyleCollection()); ShowStyles[0].AddRange(new GridColumnStyle[] { new GridColumnStyle("xh", "序号", 40) , new GridColumnStyle("name", "名称", 80) , new GridColumnStyle("py", "拼音", 70) , new GridColumnStyle("wb", "五笔", 70) }); SelectedStyleIndex = 0; //m_DrawConditions = new Collection<CustomDrawSetting>(); }
/// <summary> /// 查找与指定名称匹配的参数在List中的位置 /// </summary> /// <param name="parameterName"></param> /// <returns></returns> public int IndexOf(string parameterName) { return(FilterParameterCollection.IndexOf(this.InnerList, parameterName)); }
/// <summary> /// 用指定的DataTable等信息创建SQL字典类实例。 /// 列的显示名用DataColumn的Caption代替,需要显示的列及其列宽通过columnWidthes设置 /// </summary> /// <param name="uniqueName">局部唯一的字典名</param> /// <param name="sourceData">数据集</param> /// <param name="codeField">代码字段名</param> /// <param name="nameField">名称字段名</param> /// <param name="columnWidthes">需要显示的列名及其列宽</param> public SqlWordbook(string uniqueName, DataTable sourceData, string codeField, string nameField, Dictionary <string, int> columnWidthes) : base() { Debug.Assert(uniqueName != null, "类名不能为NULL"); Debug.Assert(uniqueName.Length > 0, "类名不能为空"); WordbookName = uniqueName; Caption = WordbookName; if (sourceData == null) { throw new ArgumentNullException("数据集不能为空"); } //if (sourceData.Rows.Count == 0) // throw new ArgumentNullException("数据集中未包含数据"); _bookData = sourceData; // DataTable中默认RowFilter作为扩展条件保存 ExtraCondition = _bookData.DefaultView.RowFilter; QuerySentence = ""; if (codeField.Length == 0) { throw new ArgumentNullException("必须指定代码字段"); } if (!sourceData.Columns.Contains(codeField)) { throw new ArgumentOutOfRangeException("指定的代码字段在数据集中不存在"); } CodeField = codeField; QueryCodeField = CodeField; if (nameField.Length == 0) { throw new ArgumentNullException("必须指定名称字段"); } if (!sourceData.Columns.Contains(nameField)) { throw new ArgumentOutOfRangeException("指定的名称字段在数据集中不存在"); } NameField = nameField; DefaultFilterFields = new Collection <string>(); // 使用默认的代码列和名称列进行过滤 DefaultFilterFields.Add(codeField); DefaultFilterFields.Add(nameField); CurrentMatchFields = new Collection <string>(); foreach (string field in DefaultFilterFields) { CurrentMatchFields.Add(field); } Parameters = new FilterParameterCollection(); ShowStyles = new Collection <GridColumnStyleCollection>(); GridColumnStyleCollection styleCollection = new GridColumnStyleCollection(); GridColumnStyle style; foreach (KeyValuePair <string, int> keyValue in columnWidthes) { style = new GridColumnStyle(keyValue.Key , sourceData.Columns[keyValue.Key].Caption, keyValue.Value); styleCollection.Add(style); } if (styleCollection.Count == 0) { throw new ArgumentException("必须设置字典的显示列信息"); } ShowStyles.Add(styleCollection); SelectedStyleIndex = 0; // Sql字典默认为不缓存数据 CacheTime = -1; //_useSqlStatement = false; //_autoAddShortCode = false; //_shortCodeAdded = true; //m_DrawConditions = new Collection<CustomDrawSetting>(); }