Hi,
I have 2 questions regarding the Syncfusion GridControl.
1. When changes are saved, the grid is wiped out and reloaded fresh. The currently selected row index is saved as well. When the grid finishes reloading, I''d like to dynamically highlight the previously selected row index (the selection mode = SelectionMode.One) so that the user know exactly which row she is working on. This doesn''t seem to work:
grid.CurrentCell.MoveTo(withholdGridIndex, 1, Syncfusion.Windows.Forms.Grid.GridSetCurrentCellOptions.ScrollInView)
-OR-
grid.Selections.SelectRange(Syncfusion.Windows.Forms.Grid.GridRangeInfo.Row(prevRowIndex), True)
2. My grids have several columns. Some of them are hidden. When the user right click on certain cell in the grid, I''d like to find the exact colIndex and rowIndex of that cell. This piece of code doesn''t seem to work (it gives me the incorrect row and col):
Dim clickPoint As Point = grid.PointToClient(Cursor.Position)
Dim row, col As Integer
If (grid.PointToRowCol(clickPoint, row, col, -1)) Then Me.EditGridEntry(grid, row, col)
TIA
AD
Administrator
Syncfusion Team
December 1, 2004 05:51 PM UTC
Oh I left out one important detail: the previous selected row index is determined by calling:
prevRowIndex = CurrentCell.RowIndex()
AD
Administrator
Syncfusion Team
December 1, 2004 06:24 PM UTC
For 1) make sure the grid has focus before calling grid.CurrentCell.MoveTo by by calling grid.Focus.
For 2, try using this method with the last parameter true.
this.gridControl1.ViewLayout.PointToClientRowCol(pt, out row, out col, true);
AD
Administrator
Syncfusion Team
December 1, 2004 09:06 PM UTC
Hi Clay,
1) The selection seems to work okay except for one thing: The highlight is not shown on the grids. (These grids are on different tabs).
2) I''ve tried this.gridControl1.ViewLayout.PointToClientRowCol(pt, out row, out col, true);
I got an error saying this function is obsolete.
I used grid.ViewLayout.PointToClientRowCol(clickPoint, out row, out col, true, Syncfusion.Windows.Forms.Grid.GridCellSizeKind.ActualSize)
>For 1) make sure the grid has focus before calling grid.CurrentCell.MoveTo by by calling grid.Focus.
>
>For 2, try using this method with the last parameter true.
>
>this.gridControl1.ViewLayout.PointToClientRowCol(pt, out row, out col, true);
AD
Administrator
Syncfusion Team
December 1, 2004 09:07 PM UTC
Hi Clay,
Thanks for the quik response.
1) The selection seems to work okay except for one thing: The highlight is not shown on the grids. (These grids are on different tabs).
2) I''ve tried this.gridControl1.ViewLayout.PointToClientRowCol(pt, out row, out col, true);
I got an error saying this function is obsolete.
I used grid.ViewLayout.PointToClientRowCol(clickPoint, out row, out col, true, Syncfusion.Windows.Forms.Grid.GridCellSizeKind.ActualSize) instead and it gave me the correct column, but not the row.
>For 1) make sure the grid has focus before calling grid.CurrentCell.MoveTo by by calling grid.Focus.
>
>For 2, try using this method with the last parameter true.
>
>this.gridControl1.ViewLayout.PointToClientRowCol(pt, out row, out col, true);
AD
Administrator
Syncfusion Team
December 1, 2004 10:48 PM UTC
1) Here is a little sample for 1. If you have ListBoxSelectionMode set to One, then using CurrentCell.MoveTo seems to select the row even if the grid is on a tab that is not visible. Does this sample work for you?
WindowsApplication10_6955.zip
2) grid.PointToRowCol should return the absolute row/col count in grid, including hidden cols/rows. grid.ViewLayout.PointToClientRowCol should return the row/col index among only theh visible rows/cols. This means that if 5 rows are scrolled off the top, and you click the first scrollable visible row, grid.PointToRowCol should return 6 and grid.ViewLayout.PointToClientRowCol should return 1. If you have any hidden rows among the 5 rows off the screen, the value return by either of these methods would not change.
Is this not what you are seeing? Can you post a little sample project showing the problem you are seeing?
AD
Administrator
Syncfusion Team
December 2, 2004 06:03 PM UTC
Hi Clay,
1) Thanks a lot for the sample. It is very helpful. I was able to find out what causes the highlight not to show. In my grid SelectionChanging event, I killed it with the statement e.Cancel = true. It now works nicely.
2) Okay, I''d like to display the context menu upon a right click
private void Handles_GridMouseDown(object sender, System.Windows.Form.MouseEventArgs e)
{
if(e.Button = MouseButtons.Right)
{
Point clickPoint = grid.PointToClient(Cursor.Position)
this.PopupMenu.Show(grid, clickPoint)
}
}
When the user click a menu item (for example "Edit Record"), I''d like to be able to determine which row/col that she is pointing at and retrieve that record. I tried both functions PointToRowCol but neither one gave me the correct answer for some reason. Should I use the "CurentCell.MoveToRowIndex" and "CurrentCell.MoveToColIndex"??
private void Handles_EditMenuItemClicked(object sender, System.EventArgs e)
{
Point clickPoint = grid.PointToClient(Cursor.Position)
int row, col;
grid.ViewLayout.PointToClientRowCol(clickPoint, out row, out col, true, Syncfusion.Windows.Forms.Grid.GridCellSizeKind.ActualSize)
//Or grid.PointToRowCol(clickPoint, row, col, -1)
this.EditGridEntry(row, col)
}
Thanks,
Khoi
AD
Administrator
Syncfusion Team
December 2, 2004 06:11 PM UTC
You generally have to remember the clickpoint in form members as teh mouse may move when teh user selects from a long menu. Did you see the sample in this thread. It shows one way to do this. http://64.78.18.34/Support/Forums/message.aspx?MessageID=22047
AD
Administrator
Syncfusion Team
December 2, 2004 06:27 PM UTC
Thanks Clay,
Everything now works nicely the way it''s supposed to.
Khoi.