示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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>();
        }
示例#3
0
        /// <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>();
        }
示例#4
0
 /// <summary>
 /// 查找与指定名称匹配的参数在List中的位置
 /// </summary>
 /// <param name="parameterName"></param>
 /// <returns></returns>
 public int IndexOf(string parameterName)
 {
     return(FilterParameterCollection.IndexOf(this.InnerList, parameterName));
 }
示例#5
0
        /// <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>();
        }