ColumnChanging Canceled

Ex_Soft
Дата: 13.07.2005 12:38:08
Можно ли как-то в OnColumnChanging запретить изменение? 4 example:
static void dt_ColumnChanging(object sender, DataColumnChangeEventArgs e)
{
	if(e.Row[e.Column.ColumnName].ToString()==e.ProposedValue.ToString())
		CancelModify=true; // или что-то вроде этого
}
или это можно решить как-то по-другому? Просто необходимо запретить "изменение" значений, которые на самом деле не изменяются (что бы в последствии можно было бы корректно RowState заюзать). Сравнивать перед присваиванием - муторно...

/me И че они в set'ере проверку не сделали?..
_________________
"Helo, word!" - 17 errors 56 warnings
dma_caviar
Дата: 18.07.2005 09:49:46
Я сделал так:



Private laststat As System.Data.DataRowState

Private Sub FDataTable_ColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles FDataTable.ColumnChanged
If e.Row.HasVersion(DataRowVersion.Original) Then If e.ProposedValue.ToString = e.Row(e.Column, DataRowVersion.Original).ToString And laststat = DataRowState.Unchanged Then e.Row.RejectChanges()
End Sub

Private Sub FDataTable_ColumnChanging(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles FDataTable.ColumnChanging
laststat = e.Row.RowState
If e.Row.HasVersion(DataRowVersion.Original) Then If e.ProposedValue.ToString = e.Row(e.Column, DataRowVersion.Original).ToString And laststat = DataRowState.Unchanged Then e.Row.RejectChanges()
End Sub
dma_caviar
Дата: 18.07.2005 09:51:53
Кстати, e.ProposedValue и e.Row(e.Column, DataRowVersion.Original) перед преобразованием в String неплохо бы на Nothing проверить
Ex_Soft
Дата: 17.08.2005 09:11:25
Попробуем зайти с другой стороны: можно ли как-то переопределить set'ер DataRow.Item (public object this[string] {get; set;})?
На предмет как нормальные люди делают:
if(Value!=NewValue)
  Value=NewValue;
_________________
"Helo, word!" - 17 errors 56 warnings