2016-09-13 2 views
2

취급 할 때 현재 편집 값을 얻는 방법 : 사용하여 값을 얻기 위해 노력야누스 GridEX는 : CellValueUpdated 이벤트에 새로 편집 된 값을 가져올 수 없습니다

public class GridEX // ... 
{ 
    // ... 
    public event ColumnActionEventHandler CellValueChanged; 
    // ... 
}; 

을 :

GridEXCell valueChangedCell = _gridView.CurrentRow.Cells[<desired_column_index>]; 
object rawValue = valueChangedCell.Value; 
// or even with 
string rawValue = valueChangedCell.Text; 

유일한 순간 valueChangedCell의 값이 변경되면 CellUpdated 또는 UpdatingCell 이벤트가 발생합니다. 그러나 후자의 두 개는 사용자가 편집 된 셀의 새 값을 적용하기 위해 키보드 입력 포커스를 다른 셀로 변경 한 경우에만 발생합니다. 값을 조회하려는 셀은 확인란 만 포함하는 셀입니다. 사용자가 포커스를 변경하는 즉시가 아니라 주어진 셀의 체크 박스가 토글 된 직후에 주어진 액션을 수행하고 싶습니다. 테이블의 다른 셀로 이동합니다. 이벤트의 설명에 일부 행 버퍼가 언급되는 것을 보았다 :

[Description("Occurs after changes in a cell are copied into the row's buffer.")] 
public event ColumnActionEventHandler CellUpdated; 

[Description("Occurs before updating the changes in a cell to the row's buffer")] 
public event UpdatingCellEventHandler UpdatingCell; 

내가 체크 박스의 현재 값이 아마 버퍼에 새로운 값이 셀에 적용되는 초점 변경에 따라 유지되는 것을 가정한다.

야누스의 GridEX.CellValueChanged을 처리 할 때 체크 박스의 현재 설정된 값을 가져 오는 방법에 대한 아이디어가 있으십니까?

답변

0

파티에 늦게 조금,하지만 난 변경된 셀은 CheckBox의

private void gridEX1_CellChanged(object sender, ColumnActionEventArgs e) 
{ 
    if (e.Column.ColumnType == ColumnType.CheckBox) 
    { 
     gridEX1.UpdateData(); // Flush any pending changes 
    } 
} 

때 단지 보류중인 변경을 플러시하기로 결정 같은 어려움을 겪고 이후이 그 상품의 다른 핸들러를 트리거합니다 (내 경우) 검증

+1

이 나를 위해 작동하지 않습니다, 벡 업데이트중인 행의 포커스를 변경하지 않으면 모델이 업데이트되지 않습니다. 아래 이벤트에서 발생하는 메서드를 추가하여 문제를 해결했습니다. private void CloseEditMode() { gridRubrica.AllowEdit = InheritableBoolean.False; gridRubrica.AllowEdit = InheritableBoolean.True; } 개인 무효 gridRubrica_CellValueUpdated (객체 송신자 ColumnActionEventArgs 전자) { 은 (는 e.Column.Key.Equals ("선택")) {경우 CloseEditMode(); } } – TodorBalabanski

1

와 나는 아래의 이벤트에서 발사되는 방법을 추가 문제 해결 : 개인 무효를

CloseEditMode() 
{ 
    gridRubrica.AllowEdit = InheritableBoolean.False; 
    gridRubrica.AllowEdit = InheritableBoolean.True; 
} 

private void gridRubrica_CellValueUpdated(object sender, ColumnActionEventArgs e) 
{ 
    if (e.Column.Key.Equals("Selected")) { CloseEditMode(); } 
} 
관련 문제