I tried dt_RowDeleted() , but does not work really well.
The row still "disappear" from datagrid, even it is in datatable.
Even I try to set data grid's DataSource back again or call
dataGrid.Refresh(), or sort the grid,
neither way helps.
The row is still "seems" deleted from the datagrid, I mean, not visible.
But when I click the datagrid "existing data area", the missing row come
back!!
So now I need somehow make a fake mouse click to simulate this action. I
haven't finger out how yet.
By the way, I find I ofter need do this kind of fake action in code. I
thought EndEdit() could help, but does not.
For example, I want something to happen when the user click on a cell. But
Mouse event is not always fired if the current cell hasn't changed, I need
change current cell to someother cell in my code to make mouse down event
always triggered.
Another example is, when I try to move a row up and down in a datagrid, it
does not work well if there is a cell is seleted(even this column is read
only), I need use code to select whole line so no CurrentCell selected.
Oh, there is another thing, to get data in a deleted datarow, I forget to
use DataRowVersion, so there was an exception. But this exception is not
"throw" in the event dt_RowDeleted( ), it is an slient exception!! Take me a
while to find out the mysterious behavior.
private void dt_RowDeleted(object sender, DataRowChangeEventArgs e)
{
int id= (int)e.Row["id", DataRowVersion.Original];
if(id >5)
{
e.Row.RejectChanges();
MessageBox.Show(this, "Can not delete!"); //this worked,
message showed
//this.dataGrid.DataSource = this.dt.DefaultView; //set
DataSource again, but does not help
//this.dataGrid.Refresh();
//does not help
//this.dt.DefaultView.Sort = "id ASC"; //does
not help
}
}
Thanks,
Ryan Liu
"Bruce Wood" <br*******@canada.com> ????
news:11*********************@v46g2000cwv.googlegro ups.com...
I notice with some dismay that the RowDeleting event isn't cancelable,
as most other "...ing" events are.
Now, I've never tried this myself, but have you tried doing an
e.Row.RejectChanges() in the dt_RowDeleted() handler, rather than the
RowDeleting() handler? It seems logical that RejectChanges wouldn't do
anything in the RowDeleting event handler, because the row is "about to
be deleted," so there is as yet no change to reject. Perhaps in the
RowDeleted() handler the change will already have happened (thus the
"...ed" ending) and it will be possible to reject it.
Good luck.