I try to insert a new row in a grid and then set a cell automatically to edit mode. The row is inserted via databinding to a business object, and not directly to the grid. The row is highlighted but no cell is in edit mode. If I first click on the grid and then inserts a new row it works for every new row thereafter. It's look like I am missing something the mouseclick do. A row insert is done by adding a new business object, and I deal with the new row in InitializeRow like this:
{
e.Row.Activate();
grid.ActiveCell = aCell;
}
The PerformAction seems to have no effect. If I click the grid first, it works as expected.
Some suggestion?
Kind Regards
Magnus
Oslo, Norway
Here's what I use for doing what you ask:
private void csfGridIkkeBehandletNemd_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e) { UltraGrid grid = (UltraGrid)sender; e.Row.Activate(); UltraGridCell aCell = e.Row.Cells["Tekst"]; grid.ActiveCell = aCell; grid.PerformAction(UltraGridAction.EnterEditMode, false, false); grid.ActiveCell.SelStart = 0; }
Thanks.
But it seems that PerfomAction have no effect. I get an error if i try to do SelStart after
grid.PerformAction(UltraGridAction.EnterEditMode)
Error: (selStart are not supported while the cell is not in edit mode)
Yes it is very odd. I am using selStart only because of a tip earlier in this tread. That is not my main problem but only a sympton, the problem is to get the cell in editmode.
hi maggreen,
I had the same problem like you today. My solution is: I put the code to add a new row into the grid into the Shown event of the form and then all is fine. Try this, perhaps it helps. As Mike said it seams to me like a timing issue.
So... you are saying that the cell is not entering edit mode, even if you do not set the SelStart?
As I said, this worked fine for me when I did it. Are you using the same event I did - the Enter event?
Hello Mike
I have now also tried the enter event with the same result. But I would prefer to have the code regarding row insert in the click event for the "Insert Button".
I tried with insert new row in the insert button click event, and moved the activation of cell and PerfomAction in the enter event.
Some observation:
1) Then enter event is not fired unless I do a grid.Focus() in the button click event.
2) If I have not mouse clicked the grid, and then clicked the insert button: The enter event is fired once for each button click event because of the grid.Focus()
3) If I first have mouse clicked on the grid, and then clicked the insert button: The Enter event is also fired when the PerfomAction(EnterEditMode) is called within the Enter event.
maggreen: did you find any solution for this? I am having the exact problem.
Sorry for digging out such an old post ... Google send me here after searching for a solution to this exact same problem I had at work. Took a while to explore everything and finally we found out the cause of the error : the cell activation mode was set as "NoEdit" in the initialization of the Form.
Columns("NewDelai").CellActivation = Activation.NoEdit
so whenever we try to force the edit mode on this cell programmatically, we ended up with the same error OP got. ugRapport.PerformAction(UltraGridAction.EnterEditMode) ugRapport.ActiveCell.SelStart = 0
Hope this can help others too !
By trial and error...I've fixed the problem -- or at least worked around it. This is a threading issue on the Ultragrid. If I call: grid.PerformAction(Infragistics.Win.UltraWinGrid.UltraGridAction.EnterEditMode) directly (on the first row, first cell) it just doesn't work. However, if I set up a delegate and invoke the delegate, it works fine:
Private Delegate Sub PerformAction()
Sub WinGridPerformAction() grid.PerformAction(Infragistics.Win.UltraWinGrid.UltraGridAction.EnterEditMode) End Sub
Sub InitGrid() grid.DataSource = myDataSource grid.Focus() grid.DisplayLayout.Rows(0).Cells(0).Activate() Me.BeginInvoke(New PerformAction(AddressOf WinGridPerformAction)) End Sub
I am having the exact same problem. Can anyone help?
No matter what I do and where I do it, the first cell is active, but will not enter edit mode without a mouse click.
the row is active, teh cell is active, but Performaction(.....EnterEditMode) just doesn't make it go into edit mode! ARRRGGGH driving me nuts.