2010-01-11 4 views
0

코드가 명확 해 지도록 코드가 단순화되었습니다.새로 고침 asp.net의 onClick에 데이터 게시

내가 Controls.Add에를 사용하는 사용자 지정 컨트롤을 쓰고 있어요

설명()는 원하는 서브 컨트롤을 모두 추가 할 수 있습니다.

예를 들어 내 컨트롤을 "lots_of_text_boxes"라고하고 최소한의 텍스트 상자를 추가하고 "새 텍스트 상자 추가"라는 단추 (Controls.Add (단추))를 제공한다고 가정 해보십시오.

컨트롤이 멋지게 렌더링됩니다. 버튼을 클릭하면 OnLoad (EventArgs e)가 하위 컨트롤을 다시 만들고 asp.net의 마법은 게시 된 모든 데이터를 찾고 텍스트 상자에 채워서 읽을 수있게합니다.

btnAddNew_Click (개체 보낸 사람, EventArgs e)은 새 텍스트 상자를 추가하기 위해 호출됩니다.

처음에는 Controls.Add (텍스트 상자)를 시도했지만 추가 버튼 아래쪽에 텍스트 상자를 넣었습니다.

단추를 제거하고 텍스트 상자를 추가 한 다음 단추를 다시 추가 할 수는 있지만 실제 상황에서는 간단하지 않기 때문에이 작업을 수행하지 않으려 고합니다 (많은 관련 단추와 컨트롤이 서로 얽혀 있음).

원하는 작업 : Number_of_Textboxes_to_show ++; Controls.Clear(); OnLoad (새 EventArgs());

이 컨트롤을 처음부터 다시 시작하고 새 컨트롤 하나를 사용하여 다시 만듭니다.

문제

POSTDATA 이미 페이지가 다시 그려하지만 필드에있는 모든 데이터가 손실 된로드 있기 때문이다. 정말 모든 하위 컨트롤을 통과하여 자신의 게시물 데이터를 다시로드하는 "LoadPostData()"함수가 필요합니다.

포스트 데이터는 여전히 메모리에 있습니다 (희망 사항). 패스 2의 모든 컨트롤은 패스 1에서와 동일한 고유 ID를 가지고 있습니다 (게시 된 이전 폼에서).

누구나 이런 사람이 있습니까?

답변

1

문제가있는 것처럼 들리는 것은 간단한 제어 배치입니다. 컨트롤이 원하는 위치 (버튼 위에 있음)에 추가되면 폼을 지우고 다시 빌드 할 필요가 없습니다.

몇 가지 Panel 또는 Placeholder 컨트롤을 사용자 정의 컨트롤에 추가하여 레이아웃을 정의하는 것이 좋습니다. 이렇게하면 전체 사용자 컨트롤 대신 텍스트 상자를 패널에 추가 할 수 있으므로 레이아웃을 유지하고 컨트롤을 원하는 위치로 유지할 수 있습니다.

+0

문제는 모든 텍스트 상자 옆에있는이 텍스트 상자 단추를 제거하고 많은 사람들이 입력을 포기할 것으로 예상하기 때문에 사용자가 저장을 누를 때까지 데이터베이스에 아무 것도 쓰고 싶지 않다는 것입니다. 나는 각 컨트롤을 통과하여 삭제하거나 추가 할 때마다 업데이트를 시도 할 수 있습니다. 그리고 저장시 삭제할 것을 알아야하고 새 것을 삭제해야한다는 이유로 데이터베이스에있는 두 가지 삭제 유형이 있습니다. 어디에서 결코 구원받지 못하는지). 문제는 내 삭제 버튼과 추가 버튼이 onload가 수행하는 로직의 일부를 다시 구현해야한다는 것입니다. 나는 버그에 대해 걱정하고있다. – Jeff