Exemplo n.º 1
0
        private void dataGrid_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (!db.IsOpen || treeDb.SelectedNode == null || treeDb.SelectedNode.ImageIndex == 0)
            {
                return;
            }

            string    tableName  = treeDb.SelectedNode.Text;
            string    columnName = dataGrid.Columns[e.ColumnIndex].HeaderCell.Value.ToString();
            SortOrder order      = dataGrid.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection;
            string    dbtype     = db.GetColumnDataType(tableName, columnName);

            if (dbtype == "ntext" || dbtype == "image")
            {
                return;
            }

            dataGrid.SuspendLayout();
            dataGrid.Columns.Clear();
            switch (order)
            {
            case SortOrder.None:
                order = SortOrder.Ascending;
                break;

            case SortOrder.Ascending:
                order = SortOrder.Descending;
                break;

            case SortOrder.Descending:
                order = SortOrder.Ascending;
                break;
            }
            dataGrid.DataSource = db.GetTableData(tableName, columnName, order);
            dataGrid.Columns[columnName].SortMode = DataGridViewColumnSortMode.Programmatic;
            dataGrid.Columns[columnName].HeaderCell.SortGlyphDirection = order;
            if (e.Button == MouseButtons.Right)
            {
                dataGrid.Columns[columnName].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            }
            dataGrid.ResumeLayout();
        }