2013-04-10 3 views
0

저는 Ektron FormBlock과 함께 작업 중이며 코드 뒤에 동적으로 FormFieldItem을 추가하려고합니다. 나는 두 가지 방법을 시도했지만 항상 제출 버튼 뒤에 항목을 추가합니다.Ektron이 FormBlock에 동적으로 FormFieldItem을 추가합니다.

FormBlock1.Controls.Add(myCntrl); 
FormBlock1.Page.Form.Controls.Add(myCntrl); 

contorl을 양식에 동적으로 추가하여 양식 블록에 넣을 수있는 적절한 방법은 무엇입니까? 검사 후 controls 속성에는 폼의 컨트롤이없는 것처럼 보입니다. Fields 속성도 있지만 읽기 전용입니다.

도움을 주시면 감사하겠습니다.

답변

0

양식 블록 컨트롤은 작업 영역에 정의 된 양식 필드에 대해 HTML을 렌더링합니다. 양식 필드에 대한 ASP.NET 컨트롤을 만들지 않고 HTML 만 만듭니다.

동적 ASP.NET 필드를 페이지의 다른 곳에서 만들 수 있습니다. 그런 다음 페이지의 Render 메서드를 재정 의하여 필드의 HTML을 양식 블록 컨트롤의 HTML로 옮깁니다.

페이지를 제출하면 동적 필드의 값이 FormBlock 컨트롤에 의해 작업 영역에 저장되지 않습니다. 일부 동적 데이터를 저장하려는 경우 Workarea의 Form에 숨겨진 필드를 추가 할 수 있습니다. 사용자가 동적 컨트롤에 값을 입력하면 JavaScript를 사용하여 숨겨진 필드에 값을 복사합니다.

+0

네, 그 모든 노력을 다했습니다. 그러나 추가하려는 컨트롤은 HTML 입력 파일 업로드입니다. 내 Ektron 위젯은 페이지에서 훌륭하게 작동하지만 페이지 작성기 페이지에서는 작동하지 않습니다. 어떤 이유로 인해 요청 파일 컬렉션이 비어있어 제출시 파일이 캡처되지 않는다고 생각하게됩니다. 페이지 빌드가 어떻게 든 폼 데이터를 망칠 것 같습니다. 그 빛을 비춰 줄 수 있습니까? – LilMoke

+0

위젯은 업데이트 패널에서 빌드됩니다. 그것은 사물에 엉망이되는 경향이 있습니다. 몇 가지 해결책은 다음과 같습니다. jquery 준비 이벤트에서 무언가를하려한다면 ScriptManager.RegisterStartupScript 호출로 바꿉니다. 또한 ScriptManager.EnablePartialRendering = false로 아약스 동작을 방지해야 할 수도 있습니다. – maddoxej