2008-10-01 5 views
4

나는 여러 개의 필드와 gridview가있는 간단한 웹 폼을 가지고있다. 저장 및 취소 버튼도 있습니다.ASP.net Web App 실행 취소 지원

사용자가 취소를 누르면 양식의 데이터에 대해 수행 된 작업을 실행 취소하는 방법이 필요합니다. 이것은 그리드 뷰에 대한 변경이 데이터베이스에 대해 실시간으로 발생하기 때문에 필자는 필드에 대해 충분히 간단합니다. 실행 취소 기능을 얻는 방법을 모릅니다.

나는 viewstate에서 gridview에 대한 변경 사항을 저장하려고 생각했지만 여분의 공간 요구 때문에 오히려하지 않을 것입니다.

또한 변경 사항을 저장 한 임시 테이블을 생각한 다음 필요에 따라 롤백합니다.

누구든지 양식에서 실행 취소 기능을 얻는 방법에 대한 아이디어가 있습니까?

답변

2

세션 개체에 모든 데이터를 보관하고 준비가되면 데이터베이스에 기록하십시오. 데이터 계층을 추상화하는 경우 세션 객체와 상호 작용하는 ObjectDataSource를 사용할 수 있습니다.

현재 전자 상거래 사이트의 결제 시스템에서이 방법을 사용하고 있습니다. 데이터베이스 스키마를 모방 한 사용자 지정 개체에 데이터를 저장합니다.

0

한 가지 방법은 타임 스탬프와 해당 응용 프로그램 인스턴스의 식별자와 함께 테이블의 변경 내용을 다른 테이블에 저장하는 것입니다. 특정 시간 이후에 변경 사항을 실행 취소하려는 경우 해당 식별자에 대한 해당 날짜까지 역순으로 목록을 탐색합니다.

1

가장 쉬운 해결 방법은 사용자가 "저장"버튼을 클릭 할 때까지 데이터베이스에 대한 gridview의 변경 내용을 커밋하지 않는 것입니다.

나중에 실행 취소 할 변경 내용을 기록하기 위해 viewstate 또는 일부를 사용하기로 결정한 경우 초기 변경시 동일한주의 사항 (예 : 충돌 업데이트)을 수행하는 것을 잊지 마십시오.

0

흠 ... 데이터 개체를 세션에로드하고 (MyObject)Session["MyObject"] 개체에서 컨트롤을 바인딩하십시오. 세션을 사용하기 위해 ObjectDataSource에 연결할 수 있다고 생각합니다. 그러면 변경 사항이 세션에 기록되도록 Update 이벤트를 재정의 할 수 있습니다.

사용자가 클릭을 저장하면,이를 세션 객체를 가지고 저장 : MyObject obj = (MyObject)Session["MyObject"]; MyObject.Save()

그것은 당신에게 취소의 여러 수준을주지 못할 것이다 ... 나는 생각하지만, 당신이 정말로 필요한 경우 여러 세션 객체를 절약 할 수 .