Ejemplo n.º 1
0
        /// <summary>
        /// Sorts by the given column index.
        /// </summary>
        /// <param name="header"></param>
        private void Sort(EntityListViewColumnHeader header)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }

            // property...
            PropertyDescriptor property = header.Property;

            if (property == null)
            {
                throw new ArgumentNullException("property");
            }

            // get a comparer...
            IComparer comparer = null;

            if (property is EntityFieldPropertyDescriptor)
            {
                comparer = ((EntityFieldPropertyDescriptor)property).Field.GetComparer(Cultures.User);
            }
            else
            {
                comparer = ComparerBase.GetComparer(property.PropertyType, Cultures.User);
            }

            // check...
            SortOrder useOrder = SortOrder.Ascending;

            if (this.SortColumn == header)
            {
                if (this.Sorting == SortOrder.Ascending)
                {
                    useOrder = SortOrder.Descending;
                }
                else
                {
                    useOrder = SortOrder.Ascending;
                }
            }

            // sort...
            SortDirection direction = SortDirection.Ascending;

            if (useOrder == SortOrder.Descending)
            {
                direction = SortDirection.Descending;
            }
            this.ListViewItemSorter = new EntityListViewComparer(header, comparer, direction);
            this.Sorting            = useOrder;
            _sortColumn             = header;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public EntityListViewComparer(EntityListViewColumnHeader header, IComparer innerComparer, SortDirection direction)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }
            if (innerComparer == null)
            {
                throw new ArgumentNullException("innerComparer");
            }

            _header        = header;
            _innerComparer = innerComparer;

            // mbr - 2010-04-05 - removed direction...
            //// set...
            //if(this.InnerComparer is IComparerDirection)
            //    ((IComparerDirection)this.InnerComparer).Direction = direction;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates the view.
        /// </summary>
        internal void RefreshView()
        {
            // check...
            if (EntityListView == null)
            {
                throw new ArgumentNullException("EntityListView");
            }
            if (Entity == null)
            {
                throw new ArgumentNullException("Entity");
            }

            // walk the columns...
            this.SubItems.Clear();
            for (int index = 0; index < this.EntityListView.Columns.Count; index++)
            {
                object value = null;

                // header...
                ColumnHeader header = this.EntityListView.Columns[index];
                EntityListViewColumnHeader entityHeader = null;
                if (header is EntityListViewColumnHeader)
                {
                    entityHeader = (EntityListViewColumnHeader)header;
                }

                // check...
                if (entityHeader == null)
                {
                    throw new ArgumentNullException("entityHeader");
                }
                if (entityHeader.Property == null)
                {
                    throw new ArgumentNullException("entityHeader.Property");
                }

                // get the value...
                value = entityHeader.Property.GetValue(this.Entity);

                // get a converter...
                TypeConverter converter = null;
                if (entityHeader.Property is EntityFieldPropertyDescriptor)
                {
                    converter = ((EntityFieldPropertyDescriptor)entityHeader.Property).Field.GetConverter();
                }

                // convert...
                string valueAsString = null;
                if (converter != null)
                {
                    valueAsString = converter.ConvertToString(null, Cultures.User, value);
                }
                else
                {
                    valueAsString = Convert.ToString(value, Cultures.User);
                }

                // trim...
                if (valueAsString == null)
                {
                    valueAsString = string.Empty;
                }
                else
                {
                    valueAsString = valueAsString.TrimEnd();
                }

                // show...
                if (index == 0)
                {
                    this.Text = valueAsString;
                }
                else
                {
                    this.SubItems.Add(valueAsString);
                }
            }
        }