When i hit the save icon on a form the subsequent "dsModified" does not see the changed records.I need to either move to the next line on the grid before saving, or to the next grid field, depending.
ie. I have some grids1,2,3,4 on a form and each uses a dataview.Grids 1 and 2 share the same source - so here i need to move to the next lineand for grids 3 + 4 i need to move to the next field.
I have code to try to fix the gotcha.
in the save routine i have this ......
//////////////// clear if (this.bEATimeSheetEntryTypeDataGridView.ActiveRow != null) { this.bEATimeSheetEntryTypeDataGridView.ActiveRow.Selected = false; } ////////////////// record this.bEATimeSheetEntryTypeDataGridView.Select(); if (this.bEATimeSheetEntryTypeDataGridView.ActiveRow != null) { storeposition1 = this.bEATimeSheetEntryTypeDataGridView.ActiveRow.Index; } //////////////// churn it this.bEATimeSheetEntryTypeDataGridView.Select(); if (this.bEATimeSheetEntryTypeDataGridView.Rows.Count > 0) { if (this.bEATimeSheetEntryTypeDataGridView.Rows.Count > 1) { this.bEATimeSheetEntryTypeDataGridView.Rows[0].Activate(); this.bEATimeSheetEntryTypeDataGridView.Rows[1].Activate(); this.bEATimeSheetEntryTypeDataGridView.Rows[0].Activate(); } else { this.bEATimeSheetEntryTypeDataGridView.Rows[0].Activate(); } } ///////////////// restore it this.bEATimeSheetEntryTypeDataGridView.Select(); if (this.bEATimeSheetEntryTypeDataGridView.ActiveRow != null) {
this.bEATimeSheetEntryTypeDataGridView.Rows.GetRowWithListIndex(storeposition1).Activate(); // this.bEATimeSheetEntryTypeDataGridView.ActiveRow.Selected = true; }
But it is all kinda messy.Is there a neat way to overcome the problem? Also if there is only 1 line in the grid, it does not work because you cannot move off the line.
My guess is that your Save button is a toolbar button or some other type of button that does not take focus. Since the grid is not losing focus when you click this button, the grid doesn't know to update the current row.
This is easily fixed. You can call Update on a row to update that single row (in this case probably the ActiveRow). Or you can call UpdateData on the grid to update all rows.