Exemple #1
0
        private void grd_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            DataTableFilterSortData data = _filterSortData;

            if (data == null)
            {
                return;
            }

            DataGridViewColumn col           = grd.Columns[e.ColumnIndex];
            DataView           v             = DataView;
            Cursor             currentCursor = Cursor.Current;

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                ShowStatusProgress("Sorting data...");
                if (Control.ModifierKeys == Keys.Shift)
                {
                    if (data.SortCols.ContainsKey(col.DataPropertyName))
                    {
                        data.SortCols.Remove(col.DataPropertyName);
                    }
                }
                else if (Control.ModifierKeys != Keys.Control)
                {
                    //data.SortCols.Clear();
                    //data.PrepareSortOrderFor(col.DataPropertyName);
                    //data.SortCols[col.DataPropertyName] = grd.SortOrder;
                    //data.CurrenSortExpression = data.GenerateSortExpression();
                    //return;

                    SortOrder sortOrder = SortOrder.None;

                    if (data.SortCols.ContainsKey(col.DataPropertyName) && data.SortCols.Count == 1)
                    {
                        sortOrder = data.SortCols[col.DataPropertyName];
                    }

                    data.SortCols.Clear();
                    data.SortCols.Add(col.DataPropertyName, sortOrder);
                    data.PrepareSortOrderFor(col.DataPropertyName);
                }
                else
                {
                    data.PrepareSortOrderFor(col.DataPropertyName);
                }

                v.Sort = data.GenerateSortExpression();
                data.CurrenSortExpression = v.Sort;
            }
            finally
            {
                Cursor.Current = currentCursor;
                HideStatusProgress();
                RefreshResultSortStatus();
            }
        }
Exemple #2
0
        private void grd_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            DataTableFilterSortData data = _filterSortData;

            if (data == null || ActiveDataTable == null)
            {
                return;
            }

            if (String.IsNullOrEmpty(data.CurrenSortExpression))
            {
                _prevUnsortedTable = ActiveDataTable;
            }

            DataGridViewColumn col = grd.Columns[e.ColumnIndex];

            DataView v = NeedNewActiveDataView();

            Cursor currentCursor = Cursor.Current;

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                ShowStatusProgress("Sorting data...");

                if (Control.ModifierKeys == Keys.Shift)
                {
                    if (data.SortCols.ContainsKey(col.DataPropertyName))
                    {
                        data.SortCols.Remove(col.DataPropertyName);
                    }
                }
                else if (Control.ModifierKeys != Keys.Control)
                {
                    SortOrder sortOrder = SortOrder.None;

                    if (data.SortCols.ContainsKey(col.DataPropertyName) && data.SortCols.Count == 1)
                    {
                        sortOrder = data.SortCols[col.DataPropertyName];
                    }

                    data.SortCols.Clear();
                    data.SortCols.Add(col.DataPropertyName, sortOrder);
                    data.PrepareSortOrderFor(col.DataPropertyName);
                }
                else
                {
                    data.PrepareSortOrderFor(col.DataPropertyName);
                }


                v.Sort          = data.GenerateSortExpression();
                ActiveDataTable = v.ToTable();
                grd.RowCount    = ActiveDataTable.Rows.Count;

                data.CurrenSortExpression = v.Sort;
            }
            finally
            {
                Cursor.Current = currentCursor;
                HideStatusProgress();
                RefreshResultSortStatus();
                grd.Invalidate();
            }
        }