2009-10-26 8 views
0

C# .net에서 하나의 응용 프로그램을 만들었습니다.이 응용 프로그램을 사용하여 datagridview를 업데이트 할 수 있습니다. 이제는 실행 취소를 구현해야합니다.DataGridview에서 실행 취소 작업을 구현하는 방법

private void button29_Click(object sender, EventArgs e) 
    { 

      Datatable dt; 
      dt.RejectChanges(); 


    } 

위의 코드를 사용하면 업데이트 전에 실행 취소 할 수 있습니다. PLZ 더 미묘한 취소를 얻으려면 사전

답변

1

나에게 감사를 제안 단어로 는하지만 난 당신이 된 DataRow 수준에서 RejectChanges()를 사용하는 실행 취소 기능이 필요합니다. 나는 DataTable이 일련의 편집 (왜 그렇게 될 것인가)을 유지한다는 것을 기억하지 않으므로 'RowChanges'에 대한 자신의 목록 (lifo stack)을 설정해야합니다.

+0

안녕하세요, 저는 초급자이기 때문에 다른 곳으로 전화를 걸 수 없습니다. – ush

+0

내가 아는 한 다른 방법은 없습니다. DataTables는 많은 정보를 저장하지 않습니다. 진지한 프로그래밍을해야 할 것입니다. 여기에서 시작하십시오 : http://msdn.microsoft.com/en-us/library/w9y9a401%28VS.80%29.aspx –

+0

정말 고마워요. – ush

3

실행 취소 스택을 만들어야합니다. 실행 취소 할 충분한 정보가있는 데이터 테이블의 각 편집 작업 후에이 스택을 채 웁니다. 그런 다음 역순으로 스택에서 작업을 수행하는 메커니즘을 제공하십시오.

라고 말하면 테이블에 int c1과 varchar c2라는 두 개의 열이 있습니다. 힌트를주기 위해 몇 가지 샘플 수업이 있습니다.

struct ColData{ 
int c1; 
string c2; 
}; 

class Action { 
public abstract bool Undo(){} 
public abstract bool Redo(){} 
} 

class AddAction : Action{ 
ColData data; 
public AddAction(ColData d){data = d;} 
public override bool Undo(){ 
    //remove the row 
    //identify it with info from local field 'data' 
} 
public override bool Redo(){ 
    //add the row with info from local field 'data' 
} 

} 
//other actions like Delete, Update 

기타 모든 작업에 대해서도 마찬가지입니다. 조치를 편집하려면 이전 값과 새 값의 두 세트의 컬럼 값이 필요할 수 있으므로 변경 사항을 앞뒤로 반복 할 수 있습니다. 변경 사항이있을 때마다 해당 조치를 조치 스택으로 푸시합니다. 실행 취소하라는 메시지가 표시되면 실행 취소 스택에서 팝 아웃하고 실행 취소 메서드를 호출 한 다음 다시 실행 스택으로 밀어 넣습니다. 일부 작업을 다시 실행하라는 메시지가 표시되면 다시 실행 스택에서 튀어 나오고 다시 실행을 호출하고 스택 실행을 취소 할 때까지 누릅니다. 다른 새로운 작업이있을 때 스택을 다시 실행하고 새 작업을 실행 취소 스택으로 푸시해야합니다.

관련 문제