HA
haneefm
Syncfusion Team
June 28, 2007 09:59 PM UTC
Hi Rajani,
To change the sort direction in a column header, You need to handle the TableControlDrawCell and draw the sort triangle direction using the GridPaintTriangle.Paint() method.And also you need to turn off the default sort icon drawing by changing the ColumnHeader.Celltype to "Header". Please refer to the following code snippet demonstrates the technique to change sort direction.
this.gridGroupingControl1.TableDescriptor.Appearance.ColumnHeaderCell.CellType = "Header";
void gridGroupingControl1_TableControlDrawCell(object sender, GridTableControlDrawCellEventArgs e)
{
GridTableCellStyleInfo style = e.Inner.Style as GridTableCellStyleInfo;
if (style.TableCellIdentity.TableCellType == GridTableCellType.ColumnHeaderCell)
{
e.Inner.Cancel = true;
e.Inner.Renderer.Draw(e.Inner.Graphics, e.Inner.Bounds, e.Inner.RowIndex, e.Inner.ColIndex, e.Inner.Style);
if (style.Tag != null)
{
ListSortDirection listSortDirection = (ListSortDirection)e.Inner.Style.Tag;
Rectangle rect = new Rectangle(e.Inner.Bounds.X + e.Inner.Bounds.Width / 3, e.Inner.Bounds.Y, e.Inner.Bounds.Width, e.Inner.Bounds.Height);// e.Bounds;
int i2 = Math.Max(0, (rect.Height - 4) / 2);
rect.Inflate(-i2, -i2);
Pen pen1 = new Pen(SystemColors.WindowFrame);
GridTriangleDirection triangleDirection = listSortDirection == ListSortDirection.Ascending ? GridTriangleDirection.Down : GridTriangleDirection.Up;
GridPaintTriangle.Paint(e.Inner.Graphics, rect, triangleDirection, Brushes.Black, pen1, true);
pen1.Dispose();
}
}
}
Best regards,
Haneef
BR
Badri Rajani Kanth
June 29, 2007 08:45 AM UTC
Hi Haneef,
Now I see two arrows, as old arrow is not yet removed.
These are my grid settings. Can you plz see if some thing is wrong?
this.gridGroupingControl1.BackColor = System.Drawing.SystemColors.Window;
this.gridGroupingControl1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.gridGroupingControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridGroupingControl1.Location = new System.Drawing.Point(0, 0);
this.gridGroupingControl1.Name = "gridGroupingControl1";
this.gridGroupingControl1.Size = new System.Drawing.Size(718, 98);
this.gridGroupingControl1.TabIndex = 0;
this.gridGroupingControl1.VersionInfo = "3.201.1.0";
gridGroupingControl1.TableOptions.AllowSelection = Syncfusion.Windows.Forms.Grid.GridSelectionFlags.None;
gridGroupingControl1.TableOptions.ListBoxSelectionCurrentCellOptions =
Syncfusion.Windows.Forms.Grid.Grouping.GridListBoxSelectionCurrentCellOptions.None;
gridGroupingControl1.TableOptions.ListBoxSelectionMode = System.Windows.Forms.SelectionMode.One;
gridGroupingControl1.TableModel.Options.ShowCurrentCellBorderBehavior =
GridShowCurrentCellBorder.HideAlways;
gridGroupingControl1.TableModel.Options.SelectCellsMouseButtonsMask =
System.Windows.Forms.MouseButtons.Left | System.Windows.Forms.MouseButtons.Right;
gridGroupingControl1.TableControl.HScrollBehavior = GridScrollbarMode.Disabled;
gridGroupingControl1.TableOptions.IndentWidth = GRID_INDENT_WIDTH;
gridGroupingControl1.TableOptions.ShowRowHeader = false;
gridGroupingControl1.TableOptions.CaptionRowHeight = GRID_CAPTION_ROW_HEIGHT;
//To change the sort direction in a column header
gridGroupingControl1.TableDescriptor.Appearance.ColumnHeaderCell.CellType = "Header";
gridGroupingControl1.TableControlDrawCell -= new GridTableControlDrawCellEventHandler(gridGroupingControl1_TableControlDrawCell);
gridGroupingControl1.TableControlDrawCell += new GridTableControlDrawCellEventHandler(gridGroupingControl1_TableControlDrawCell);
//Make sure columns will not be resiged to zero width
gridGroupingControl1.TableControlResizingColumns -= new GridTableControlResizingColumnsEventHandler(gridGroupingControl1_TableControlResizingColumns);
gridGroupingControl1.TableControlResizingColumns += new GridTableControlResizingColumnsEventHandler(gridGroupingControl1_TableControlResizingColumns);
//subscribe event to remove the dotted border around group drop area DragColumnHeaderText
gridGroupingControl1.GridGroupDropArea.PrepareViewStyleInfo -=
new GridPrepareViewStyleInfoEventHandler(GridGroupDropArea_PrepareViewStyleInfo);
gridGroupingControl1.GridGroupDropArea.PrepareViewStyleInfo +=
new GridPrepareViewStyleInfoEventHandler(GridGroupDropArea_PrepareViewStyleInfo);
gridGroupingControl1.TopLevelGroupOptions.ShowCaption = false;
gridGroupingControl1.ChildGroupOptions.ShowSummaries = false;
gridGroupingControl1.ChildGroupOptions.ShowAddNewRecordBeforeDetails = false;
gridGroupingControl1.TopLevelGroupOptions.ShowAddNewRecordBeforeDetails = false;
gridGroupingControl1.TableDescriptor.AllowEdit = false;
gridGroupingControl1.TableDescriptor.AllowNew = false;
gridGroupingControl1.TableDescriptor.AllowRemove = false;
gridGroupingControl1.TopLevelGroupOptions.ShowCaption = false;
gridGroupingControl1.TableOptions.ShowRowHeader = false;
gridGroupingControl1.TableOptions.AllowSelection = GridSelectionFlags.None;
gridGroupingControl1.TableModel.Options.SelectCellsMouseButtonsMask = MouseButtons.Left;
gridGroupingControl1.TableOptions.ShowRowHeader = false;
gridGroupingControl1.TableOptions.ListBoxSelectionCurrentCellOptions = Syncfusion.Windows.Forms.Grid.Grouping.GridListBoxSelectionCurrentCellOptions.None;
gridGroupingControl1.TableOptions.ListBoxSelectionMode = SelectionMode.MultiExtended;
//Borders
gridGroupingControl1.Appearance.AnyRecordFieldCell.Borders.Bottom = new Syncfusion.Windows.Forms.Grid.GridBorder(Syncfusion.Windows.Forms.Grid.GridBorderStyle.Solid, System.Drawing.SystemColors.Control);
//gridGroupingControl1.Appearance.AnyCell.Borders.Top = new Syncfusion.Windows.Forms.Grid.GridBorder(Syncfusion.Windows.Forms.Grid.GridBorderStyle.None);
gridGroupingControl1.Appearance.AnyRecordFieldCell.Borders.Left = new Syncfusion.Windows.Forms.Grid.GridBorder(Syncfusion.Windows.Forms.Grid.GridBorderStyle.Solid, System.Drawing.SystemColors.Control);
gridGroupingControl1.Appearance.AnyRecordFieldCell.Borders.Right = new Syncfusion.Windows.Forms.Grid.GridBorder(Syncfusion.Windows.Forms.Grid.GridBorderStyle.Solid, System.Drawing.SystemColors.Control);
gridGroupingControl1.TableControlKeyDown -= new GridTableControlKeyEventHandler(gridGroupingControl1_TableControlKeyDown);
gridGroupingControl1.TableControlKeyDown += new GridTableControlKeyEventHandler(gridGroupingControl1_TableControlKeyDown);
gridGroupingControl1.TableControlKeyUp -= new GridTableControlKeyEventHandler(gridGroupingControl1_TableControlKeyUp);
gridGroupingControl1.TableControlKeyUp += new GridTableControlKeyEventHandler(gridGroupingControl1_TableControlKeyUp);
//gridGroupingControl1.CurrentRecordContextChange +=new Syncfusion.Grouping.CurrentRecordContextChangeEventHandler(gridGroupingControl1_CurrentRecordContextChange);
gridGroupingControl1.TableModel.Options.ShowCurrentCellBorderBehavior = GridShowCurrentCellBorder.HideAlways;
gridGroupingControl1.TableModel.ClipboardCanCopy += new GridCutPasteEventHandler(TableModel_ClipboardCanCopy);
gridGroupingControl1.Appearance.AnyRecordFieldCell.CellType = "Static";
gridGroupingControl1.TableDescriptor.Appearance.AnyRecordFieldCell.CellType = "Static";
gridGroupingControl1.GridGroupDropArea.BackColor = SystemColors.ActiveCaption;
// OutlookKeysForGGControl outlook=new OutlookKeysForGGControl(gridGroupingControl1);
if(applyCustomFont)
{
GridFontInfo mGridFont = new GridFontInfo();
mGridFont.Facename = mStandardFont.FontFamily.Name;
mGridFont.Size = mStandardFont.Size;
//For Header Text in a grid.
//gridGroupingControl1.Appearance.AnyHeaderCell.ResetFont();
//gridGroupingControl1.Appearance.AnyHeaderCell.Font = mGridFont;
//For Group Font
gridGroupingControl1.GridGroupDropArea.Font = mStandardFont;
//For Grid Text
gridGroupingControl1.Font = mStandardFont;
}
else
{
gridGroupingControl1.Font = DEFAULT_STANDARD_FONT;
}
//auto preview row
gridGroupingControl1.Appearance.AnyPreviewCell.Font.Italic = false;
gridGroupingControl1.Appearance.AnyPreviewCell.TextColor = Color.Blue;
Thanks & Rgds
Rajani Kanth
HA
haneefm
Syncfusion Team
June 29, 2007 11:22 PM UTC
Hi Rajani,
You can turn off the default sort direction drawing by using the ColumnHeaderCell.CellType property in a bottom of the form's load event. Below is a code snippet
[c#]
Bottom line of the form's load event
gridGroupingControl1.TableDescriptor.Appearance.ColumnHeaderCell.CellType = "Header";
Best Regards,
Haneef