2008-11-07 3 views
5

모든 행의 모든 ​​열에 항상 값을 편집 할 수있는 GridView가 있습니다. 사용자는 모든 변경 사항을 입력하고 한 번 저장을 클릭하면 모든 변경 사항이 커밋됩니다.DataBind없이 GridView에 새 행 추가

사용자는 또한 새로 만들기 버튼을 클릭하고 GridView에 새 행을 표시 할 수 있어야합니다 (예 : 실제 GridView에 표시해야 함). 원하는 데이터를 입력하고 저장을 클릭 한 다음 모든 변경 사항을 적용하십시오. 데이터베이스로 이동하십시오.

지금. 다음과 같은 사용자 사례가 있습니다. 사용자가 페이지에 도착하여 기존 행을 여러 번 변경 한 다음 새 행을 추가하고 새 행에 데이터를 입력 한 다음 저장을 클릭하고 모든 변경 사항을 데이터베이스로 이동해야합니다 .

그러나 빈 행을 새로 추가하는 유일한 방법은 GridView를 다시 바인딩하는 것이고, 이는 모든 변경 사항이 손실된다는 것을 의미합니다. 이것은 분명히 좋지 않습니다.

그럼, 내 질문은 : GridView를 리바 인딩하지 않고도 GridView에 비어있는 새 편집 가능한 행을 추가하는 방법은 무엇일까요?

내가 생각할 수있는 유일한 것은 새로운 버튼의 클릭 이벤트에서 GridView의 모든 데이터를 사용자의 잠재적 인 편집을 포함하여 빨아 들여 ViewState (또는 무엇이든)에 저장하고 새로운 그리드를 다시 채우십시오. 이것은 나에게 약간의 해커처럼 보이지만 GridView에서 ViewState를 끌 수 있어야합니다.

아이디어가 있으십니까?

답변

3

두말할 것도없이 생각할 수 있습니다. 첫 번째 방법은 그리드에 바인딩하는 원래 결과를 캐시하는 것이며, 다른 행을 추가해야하는 경우 바인딩하려는 데이터 형식에 데이터 행을 추가 한 다음이 행을 표에 바인딩합니다. 그리드에 변경 사항이있는 경우 데이터 테이블을 업데이트해야합니다. 모든 변경이 완료되고 사용자가 저장 버튼을 클릭하면 테이블을 반복하고 데이터로 DB를 업데이트 할 수 있습니다.

그것은이

페이지가로드처럼 보일 수 있습니다

  • DB 데이터 가져 오기 테이블
  • 바인드 그리드
  • 스토어 A의 테이블에 테이블에 넣어 캐시

사용자가 새 행

  • 캐시 된 데이터 오브젝트를 취득을 요구합니다. 사용자가 그리드

    • 캐시 된 객체를 가져옵니다를 저장하면
    • 업데이트
    • 변경 한 모든 행은 그리드

    에 빈 행 바인딩을 추가합니다.

  • 하는 업데이트의 마지막 세트 행을 통해
  • 루프를 확인하고 DB

이 동적으로 그리드를 만드는 것입니다 할 수있는 다른 방법을 업데이트 할 수 있지만 그것은 가치가 당신이 무엇을 주어진 것보다 이것이 훨씬 더 많은 노력을 포함 할 것이다 설명했다.

0

동적으로 새 행을 자바 스크립트를 통해 추가하고 save 명령에서 새로 추가 된 행을 찾을 수 있습니다. 그것은 매우 일반적입니다.