2013-04-22 3 views
0

ASPxPageControl에서 일부 레이블과 텍스트 상자를 동적으로 추가했습니다. 처음에는 텍스트 상자의 Text 속성은 최종 사용자가 필요한 정보에 따라 텍스트 상자를 채울 때까지 비어 있습니다.리플렉션을 사용하여 동적으로 생성 된 ASPxTextBox의 Text 속성 가져 오기 C#

다음 단계는 저장 버튼을 누르는 것입니다 및이 경우, button_ClickEvent 기능에 내가 제대로 모든 컨트롤을 얻을 수 있지만, 텍스트 속성은 항상 사용자가 텍스트 상자

암에 채워진 경우에도 비어 내 코드에서 뭔가 빠졌습니까?

여기 내 코드입니다 :

PropertyInfo cntrlProperty; 
    foreach (System.Web.UI.Control cntrl in pControl.TabPages[1].Controls) 
    { 
      Type ControlType = testAssembly.GetType(typeof(ASPxTextBox)); 

      if (!cntrl.GetType().Equals(typeof(ASPxLabel)) && cntrl.GetType().Equals(ControlType)) 
      { 


      cntrlProperty = cntrl.GetType().GetProperty("Text"); 

      var value = cntrlProperty.GetValue(cntrl); 

       VALUES += String.Format("'{0}'" + ",", value); 
      } 


    } 

이 또한 내가 동적으로 내 컨트롤을 만들 때 기본 문자열을 설정하려고하고 컨트롤을 렌더링 할 때이 기본 문자열이 텍스트 상자에 있기 때문에이 잘 웍.

기본 문자열 = "그냥 문자열"이라고 가정 해 보겠습니다. 변수 값 위의 내 코드에서이 점 틸

= 단지 문자열 이 확인됩니다. 내가 한 다음에 무엇을

는 기본적 문자열에

기본 문자열처럼 = "단지 문자열을 보이는 런타임 (I"는 텍스트 상자에 "입력)"기본 문자열 "일부 텍스트를 추가하는 것이 었습니다 텍스트 상자에 "다음

내가 저장 버튼을 누르면 그것은 변수 값이 여전히 값 = 단지 문자열을 저장 밝혀

왜 이런 일이 일어날까요?

+0

텍스트 상자에 '그냥 문자열'이라는 값을 넣으시겠습니까? –

+0

페이지의 page_load하지만이 코드는 그냥 컨트롤을 동적으로 만들 때 (나는 그것을 필요가 없다고 생각하는) 동시에 Text 속성을 설정할 = "그냥 문자열". –

답변

0

좋아, 나는 전혀 반성 할 필요가 없다고 생각한다. 이미 타겟팅하고있는 유형에 대한 지식이 있습니다. 일반적으로 유형을 모르는 경우 리플렉션을 사용하거나 여러 유형을 처리하여 패턴에 맞출 수 있습니다. 이 작업을 수행 할 때 여전히 텍스트 속성 값을 얻을 수없는 경우

foreach (System.Web.UI.Control cntrl in pControl.TabPages[1].Controls) 
    { 
     if (cntrl is ASPxTextBox) 
     { 
      VALUES += string.Format("'{0}' + ",", (cntrl as ASPxTextBox).Text); 
     } 
    }

이,이 컨트롤의 내부에 문제가있을 수 있습니다 및 브라우저에 입력 한 텍스트를 캡처되지 않습니다

이 고려 페이지가 LoadPostData 스테이지를 통과 할 때.

또한 ASP.NET AJAX를 사용하여 컨트롤을 추가 할 때이 LoadPostData를 성공적으로 수행하려면 사용자가 만든 모든 포스트 백을이 컨트롤을 페이지에로드해야합니다. 값을 되찾아 라.

희망이 도움이됩니다.

+0

나는 당신의 코드를 시험해 보았고 나는 여전히 텍스트 값을 돌려받지 못했다.문제는 당신이 LoadPostData에 대해 언급 한 것 (LoadPostData) 또는 페이지 수명주기 (Read it)를 가지고 있다고 생각합니다. LoadPostData에 대한 유용한 링크를 제공하고 싶습니다. 검색을 해봤지만 아무것도 도움이되지 않았습니다. 이 문제는 ** RegisterRequiresPostBack() ** 함수로도 발생할 수 있다고 생각하십니까? 나는 이것을 읽었지 만 나는 아직도 그것을 얻을 수 없다. –

+0

PostBacks 대신 콜백을 사용해야한다고 생각합니다. @Arturo Martinez는 무엇을 생각합니까? –

+0

먼저 사용자 지정 컨트롤을 개발 했습니까? 또는 이것이 제 3 자 제어입니다. 타사 컨트롤 인 경우 컨트롤에서 내부적으로 LoadPostData 메서드를 처리해야하므로 가능한 솔루션을 찾기 위해 해당 포럼을 살펴보십시오. –