I am having some issue with moving a row and trying to keep the current cell on the same cell in the new row.
I am calling the CurrentCell.MoveTo method with the flag set to SetFocus.
When I trace thru it appears to move the CurrentCell to the new row. However when the PrepareViewStyleInfo method is called the current row is back to the previous one. I rely on this code to change the highlighting and expand the current row.
All subsequent code points to the current cell being back where it was before the move. However right after I call the move to the current cell is correct?
ADAdministrator Syncfusion Team June 6, 2003 08:44 AM
The e.RowIndex from the PrepareViewStyleInfo eventargs may or may not point to the current row. It points to the row of the cell that is about to be drawn. When you move from one row to another, it is likely both rows may need to be painted for some reason or the other.
If you want to get the current row in PrepareViewStyleInfo, then you should use grid.CurrentCell.RowIndex. Is this how you are getting the currentrow?
ADAdministrator Syncfusion Team June 6, 2003 08:47 AM
Try also to to set RefreshCurrentCellBehavior.RefreshRow
That will force the whole row to be repainted when moving to a new row.
CCCharles CarlinJune 6, 2003 09:10 AM
Maybe I confused the issue by keying in on PrepareView... The grid controls (non-databound) currentcell.rowindex property is changed to the correct value immediately after the call, however in prepareview and any other methods called afterwards the currentcell.rowindex is back to the old row. So if I trap in anywhere else (mousemove, currentcellmoving, etc) the currentcell is no longer correct.
CCCharles CarlinJune 6, 2003 09:17 AM
Now I am really confused because when I move row 4 up to row 3 and set row 3 active, row 4 remains active (after the initial call).
However if I move row 4 to row 1 then row 2 becomes the current row.
Similarly if I move row 1 to row 4 then row 3 becomes active.
There definitely seems to be some type of off by one error here. It seems if I move a row up then the current row will equal one more then what I set it to and if I move it down it will equal one less?
ADAdministrator Syncfusion Team June 6, 2003 10:26 AM
The column header row is row zero, and the first 'regular' row is row 1.
Can you attach a little project here showing this problem, or submit a Direct Trac support incidence with a sample?
CCCharles CarlinJune 6, 2003 12:13 PM
Well I figured it out, not really why but what caused it and how to do it properly.
I was calling:
gridControl1.Model.Rows.MoveRange(row, 1, nInsertAt);
Which then raised the event for rowsmoving which was where I was trying to set the currentcell. I moved that code out of the rowsmoving event and placed it directly after the call to moverange and it works fine.