Esempio n. 1
0
    private SortOrder ReverseSort(bool keepSamePriority, int sortPriority)
    {
        SortColDefn colDefn = _sortedColumns[sortPriority];

        // The column is already being sorted.
        SortOrder sortOrder;

        if (sortPriority == 0 || keepSamePriority)
        {
            // There is no need to change where it is in the list.
            colDefn.ascending            = !colDefn.ascending;
            _sortedColumns[sortPriority] = colDefn;

            sortOrder = colDefn.ascending ? SortOrder.Ascending : SortOrder.Descending;
            if (sortPriority != 0)
            {
                return(sortOrder);                        // Reverse only, do not set the glyph.
            }
        }
        else
        {
            // Promote this column to be the first.
            for (int loop = sortPriority; loop > 0; --loop)
            {
                _sortedColumns[loop] = _sortedColumns[loop - 1];
            }
            // Promoted columns are always sorted ascending.
            colDefn.ascending = true;
            _sortedColumns[0] = colDefn;
            sortOrder         = SortOrder.Ascending;
        }
        _grid.Columns[colDefn.colNum].HeaderCell.SortGlyphDirection = sortOrder;

        return(sortOrder);
    }
Esempio n. 2
0
        public SortOrder SetSortColumn(int columnIndex, Keys ModifierKeys)
        {
            bool        keepSamePriority = ((ModifierKeys & Keys.Control) == Keys.Control);
            SortColDefn colDefn;
            int         colunaOrdenacao = 0;

            colunaOrdenacao = MapearOrdenacaoColuna(columnIndex);

            if (_sortedColumns.Count > 0 && !keepSamePriority)
            {
                // Erase the current sort glyph.
                colDefn = _sortedColumns[0];
                _grid.Columns[colDefn.colNum].HeaderCell.SortGlyphDirection = SortOrder.None;
            }

            int sortPriority = _sortedColumns.FindIndex(
                delegate(SortColDefn cd) { return(cd.colNum == colunaOrdenacao); });

            if (sortPriority != -1)
            {
                return(ReverseSort(keepSamePriority, sortPriority));
            }

            // Column not found in list.
            // This column is not being sorted at present.

            // If got to limit of num sorted columns, remove the current last one.
            if (_maxSortColumns > 0 && _sortedColumns.Count == _sortedColumns.Capacity)
            {
                _sortedColumns.RemoveAt(_sortedColumns.Count - 1);
            }

            colDefn = new SortColDefn(colunaOrdenacao, SortOrder.Ascending);
            if (keepSamePriority)
            {
                _sortedColumns.Add(colDefn);
                if (_sortedColumns.Count > 1)
                {
                    return(SortOrder.Ascending);                    // Do not set the glyph.
                }
            }
            else
            {
                _sortedColumns.Insert(0, colDefn);
            }

            colDefn.colNum = short.Parse(columnIndex.ToString());

            _grid.Columns[colDefn.colNum].HeaderCell.SortGlyphDirection = SortOrder.Ascending;

            _sortedColumns[0].colNum = colDefn.colNum;

            return(SortOrder.Ascending);
        }
Esempio n. 3
0
        public SortOrder SetSortColumn(int columnIndex, Keys ModifierKeys)
        {
            bool        keepSamePriority = ((ModifierKeys & Keys.Control) == Keys.Control);
            SortColDefn colDefn          = new SortColDefn();

            colDefn = MapearOrdenacaoColuna(columnIndex);

            if (_sortedColumns.Count > 0 && !keepSamePriority)
            {
                // Erase the current sort glyph.
                _grid.Columns[_sortedColumns[0].colOriginal].HeaderCell.SortGlyphDirection = SortOrder.None;
            }

            int sortPriority = _sortedColumns.FindIndex(
                delegate(SortColDefn cd) { return(cd.colNum == colDefn.colNum); });

            if (sortPriority != -1)
            {
                return(ReverseSort(colDefn, keepSamePriority, sortPriority));
            }

            if (keepSamePriority)
            {
                _sortedColumns.Add(colDefn);
                if (_sortedColumns.Count > 1)
                {
                    return(SortOrder.Ascending);                    // Do not set the glyph.
                }
            }
            else
            {
                _sortedColumns.Insert(0, colDefn);
            }

            colDefn.colNum = short.Parse(columnIndex.ToString());

            _grid.Columns[colDefn.colOriginal].HeaderCell.SortGlyphDirection = SortOrder.Ascending;

            return(SortOrder.Ascending);
        }
Esempio n. 4
0
		public SortOrder SetSortColumn(int columnIndex, Keys ModifierKeys)
		{
			bool keepSamePriority = ((ModifierKeys & Keys.Control) == Keys.Control);
			SortColDefn colDefn;

			if (_sortedColumns.Count > 0 && !keepSamePriority)
			{
				// Erase the current sort glyph.
				colDefn = _sortedColumns[0];
				_grid.Columns[colDefn.colNum].HeaderCell.SortGlyphDirection = SortOrder.None;
			}

			int sortPriority = _sortedColumns.FindIndex(
				delegate(SortColDefn cd) { return cd.colNum == columnIndex; });

			if (sortPriority != -1)
				return ReverseSort(keepSamePriority, sortPriority);

			// Column not found in list.
			// This column is not being sorted at present.

			// If got to limit of num sorted columns, remove the current last one.
			if (_maxSortColumns > 0 && _sortedColumns.Count == _sortedColumns.Capacity)
				_sortedColumns.RemoveAt(_sortedColumns.Count - 1);

			colDefn = new SortColDefn(columnIndex, SortOrder.Ascending);
			if (keepSamePriority)
			{
				_sortedColumns.Add(colDefn);
				if (_sortedColumns.Count > 1)
					return SortOrder.Ascending; // Do not set the glyph.
			}
			else
				_sortedColumns.Insert(0, colDefn);

			_grid.Columns[colDefn.colNum].HeaderCell.SortGlyphDirection = SortOrder.Ascending;

			return SortOrder.Ascending;
		}
Esempio n. 5
0
    protected override void OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e)
    {
        //Si no tiene datos asociados salgo.
        if (mo_dvDataView == null)
            return;

        //Agrego a la lista de columnas para el ordenamiento
        SortColDefn wSortColDefn = new SortColDefn(Columns[e.ColumnIndex].DataPropertyName,
                                                   this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection);

        //Busco la columna en la coleccion
        int windex = _sortedColumns.FindIndex(delegate(SortColDefn auxSortColDefn)
                         { return auxSortColDefn.colName == wSortColDefn.colName; });

        //Verifico que no exista en la lista de columnas a ordenar
        if (windex != -1)
        {

            //Objeto columna Auxiliar 
            SortColDefn wo_SortColDefn;

            //Obtengo el objeto de la posicion i.
            wo_SortColDefn = _sortedColumns[windex];

            _sortedColumns.Remove(wSortColDefn);

            //Seteo el tipo de orden
            if (wSortColDefn.ascending)
            {
                wo_SortColDefn.ascending = false;
                this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                    System.Windows.Forms.SortOrder.Descending;
            }
            else
            {
                wo_SortColDefn.ascending = true;
                this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                    System.Windows.Forms.SortOrder.Ascending;
            }

            //Elimino el que estaba en la lista de columnas
            _sortedColumns.Remove(wo_SortColDefn);

            //Inserto en la posicion que tenía un nuevo item con el ordenamiento solicitado
            _sortedColumns.Insert(windex, wo_SortColDefn);
        }
        else
        {
            //Seteo el tipo de orden
            if (wSortColDefn.ascending)
            {
                wSortColDefn.ascending = false;
                //this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                //  System.Windows.Forms.SortOrder.Descending;
            }
            else
            {
                wSortColDefn.ascending = true;
                //this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                //  System.Windows.Forms.SortOrder.Ascending;
            }

            //Agrego la columna a la lista
            _sortedColumns.Add(wSortColDefn);
        }


        Columns[e.ColumnIndex].SortMode = DataGridViewColumnSortMode.Programmatic;


        msz_Sort = string.Empty;

        //Recorro la coleccion de columnas a ordenar
        foreach (SortColDefn wColDefn in _sortedColumns)
        {
            msz_Sort = msz_Sort + wColDefn.colName;

            if (wColDefn.ascending)
            {
                msz_Sort = msz_Sort + " ASC,";
            }
            else
            {
                msz_Sort = msz_Sort + " DESC,";
            }

        }

        msz_Sort = msz_Sort.Substring(0, msz_Sort.Length - 1);

        mo_dvDataView.Sort = msz_Sort;


        this.DataSource = mo_dvDataView;



        base.OnColumnHeaderMouseClick(e);

    }
Esempio n. 6
0
    protected override void OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e)
    {
        //Si no tiene datos asociados salgo.
        if (mo_dvDataView == null)
        {
            return;
        }

        //Agrego a la lista de columnas para el ordenamiento
        SortColDefn wSortColDefn = new SortColDefn(Columns[e.ColumnIndex].DataPropertyName,
                                                   this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection);

        //Busco la columna en la coleccion
        int windex = _sortedColumns.FindIndex(delegate(SortColDefn auxSortColDefn)
                                              { return(auxSortColDefn.colName == wSortColDefn.colName); });

        //Verifico que no exista en la lista de columnas a ordenar
        if (windex != -1)
        {
            //Objeto columna Auxiliar
            SortColDefn wo_SortColDefn;

            //Obtengo el objeto de la posicion i.
            wo_SortColDefn = _sortedColumns[windex];

            _sortedColumns.Remove(wSortColDefn);

            //Seteo el tipo de orden
            if (wSortColDefn.ascending)
            {
                wo_SortColDefn.ascending = false;
                this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                    System.Windows.Forms.SortOrder.Descending;
            }
            else
            {
                wo_SortColDefn.ascending = true;
                this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                    System.Windows.Forms.SortOrder.Ascending;
            }

            //Elimino el que estaba en la lista de columnas
            _sortedColumns.Remove(wo_SortColDefn);

            //Inserto en la posicion que tenía un nuevo item con el ordenamiento solicitado
            _sortedColumns.Insert(windex, wo_SortColDefn);
        }
        else
        {
            //Seteo el tipo de orden
            if (wSortColDefn.ascending)
            {
                wSortColDefn.ascending = false;
                //this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                //  System.Windows.Forms.SortOrder.Descending;
            }
            else
            {
                wSortColDefn.ascending = true;
                //this.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection =
                //  System.Windows.Forms.SortOrder.Ascending;
            }

            //Agrego la columna a la lista
            _sortedColumns.Add(wSortColDefn);
        }


        Columns[e.ColumnIndex].SortMode = DataGridViewColumnSortMode.Programmatic;


        msz_Sort = string.Empty;

        //Recorro la coleccion de columnas a ordenar
        foreach (SortColDefn wColDefn in _sortedColumns)
        {
            msz_Sort = msz_Sort + wColDefn.colName;

            if (wColDefn.ascending)
            {
                msz_Sort = msz_Sort + " ASC,";
            }
            else
            {
                msz_Sort = msz_Sort + " DESC,";
            }
        }

        msz_Sort = msz_Sort.Substring(0, msz_Sort.Length - 1);

        mo_dvDataView.Sort = msz_Sort;


        this.DataSource = mo_dvDataView;



        base.OnColumnHeaderMouseClick(e);
    }