2011-11-21 6 views
1

문제가 발생했습니다. 비슷한 문제가 있지만 해결책을 찾는 것 같습니다.프로그래밍 방식으로 웹 컨트롤 추가시

기본적으로 내 Page_Load 메서드에서 프로그래밍 방식으로 만든 텍스트 상자가 있습니다. 쿠키는 특정 쿠키의 값으로 채워집니다.

그런 다음 '업데이트'버튼을 클릭합니다.이 버튼을 클릭하면 텍스트 상자에로드 된 쿠키가 업데이트됩니다.

그래서 텍스트 상자의 ID를 쿠키와 동일한 이름으로 지정하고 업데이트 단추의 On_Click 메서드에서 텍스트 상자를 순환하고 쿠키 (ID 이름)를 텍스트 상자.

그러나 이것은 작동하지 않습니다. 내가 시도한 것은 다음과 같다.

컨트롤은 onload 메서드에서 간단하게 만듭니다. 그런 다음 텍스트 상자를 변경 한 후에 단추를 클릭하면 onload 메서드가 다시 호출되어 텍스트 상자를 원본으로 다시 변경하고 원래대로 업데이트합니다.

컨트롤은 if (!Page.IsPostBack)을 확인한 후 onload 메서드에서 만들어집니다. 페이지로드 메서드가 먼저 호출되고 화면에 컨트롤을 만들지 않기 때문에이 방법은 작동하지 않습니다. 빈 화면이 있고 업데이트 된 쿠키가 없습니다.

나는 하지만 아직 아무것도 아니지만, 스스로 컨트롤을 만들려고했는데, EnableViewState을 시도했다.

아이디어가 있으십니까?

+0

정말 프로그래밍 방식으로 컨트롤을 만들 필요가 있습니까? 너 자신을 위해 훨씬 더 힘들어하고있어. 컨트롤의 다이나믹 * 번호 *가 필요한 경우 가장 쉬운 방법은'Repeater '를 사용하는 것입니다. 그래도 계속해야하는 경우이 일련의 블로그 게시물은 큰 도움이 될 것입니다. http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part -1_2900_.aspx –

+0

리피터에 좋지 않은 표정. 절대 들어 본 적도 없다. 나는 프로그래밍 방식으로 컨트롤을 사용하지 않으며,이 경우에는 페이지에 얼마나 많은 코드가 있는지 결코 알 수 없습니다. – MichaelMcCabe

답변

3

Yuo는 onLoad 메서드로 컨트롤을 만들고 if (!Page.IsPostBack) 코드 블록 안에 초기 값을 지정해야합니다. 이렇게하면 매번 제어 트리를 만들지 만 업데이트 된 값을 잃어버린 값은 다시 초기화하지 않습니다.

+0

+1 onLoad 사용에 대한 좋은 점은 페이지의 다른 컨트롤의 값에 액세스 할 수 있고 동시에 새 컨트롤의 값이 포스트 백일 때 설정된다는 것입니다. –

1

Init 이벤트 중에 컨트롤을 만들고 모든로드시에 컨트롤을 만들어야합니다 (IsPostBack을 확인하지 마십시오). 이러한 컨트롤이 포스트 백을 발생시키고 해당 속성이 viewstate에서 설정되도록하려면 이벤트가 시작되기 전에 페이지 하이라이디에 있어야합니다.

IsPostBack을 검사 한 후 초기화 중에 컨트롤을 만든 다음 Load 이벤트에서 데이터를 설정하는 경우 처음 초기화 된 다음 viewstate 데이터로 채워지기 때문에 웹 사이트에 입력 된 텍스트가 그대로 유지됩니다.

관련 문제