2013-01-14 4 views
0

OK,이 기능은 꽤 좋았지 만 뛰어난 ASP 기술을 가진 사람의 도움이 필요합니다. 나는 SQL 쿼리의 결과로 ASP 테이블을 채우기 위해 코드를 사용하고 있습니다. 읽기 전용 값은 일부 표 셀의 .text에 저장되는 반면 읽기/쓰기 값은 텍스트 상자 컨트롤의 .text (동적으로 만들어지고 표 셀에 추가됨)에 저장됩니다.ASP .Net - 동적으로 생성 된 텍스트 상자 변경/업데이트

첫 번째로드에서는 제대로 작동합니다 . 페이지가 다른 쿼리로 다시로드되면 (예 : 사용자가 다른 열을 선택하여 정렬하려면) 테이블 셀 값이 올바르게 채워지지만 텍스트 값은 변경되지 않습니다. 쿼리를 수행하기 전에 table.rows.clear()에 던져 넣으면이 문제가 해결되지 않는 것 같습니다.

더 많은 정보는 :

  • 나는 table.findcontrol()를 사용하여 모든 textbox.text 값을 닦아 방법을 만들었습니다. 버튼에 연결되면이 메서드는 speccontext (findcontrol이 텍스트 상자를 찾고/업데이트 할 수 있음을 나타냅니다.)에 영향을 미치지 만 페이지가 다시로드되는 경우 영향을받는 모든 텍스트 상자가 비어있게됩니다. 페이지로드에 배치되면 메소드는 아무 작업도 수행하지 않습니다 (텍스트 상자는 이전 값을 유지합니다). 디버그 모드에서 findcontrol은 버튼에 사용될 때 값을 가져 오지만, pageload에 추가되면 null이됩니다. 나는 table.rows.clear()이 주석 처리되고 주석 처리되지 않은 상태로이 작업을 수행했다.
  • 나는 또한 모든 코드를 oninit에 던집니다. 이것은 큰 차이를 보이지 않는 것 같습니다.
+0

'Page_Load' 이벤트가 어떤 모양인지 알면 도움이됩니다. 모든로드 후에 텍스트 상자를 다시 만들지 않는다는 것을 의미합니다. – CAbbott

답변

2

동적 제어 바람직 Init 이벤트 중에, 각 페이지 요청에 추가되어야한다. 당신이 제 시간에 그들을 재창조하지 않는 것 같네요.

것은 동적 컨트롤은 자신의 값을 유지하는 페이지주기의 일환으로, 그들은 당신이 필요로 위해서는 viewstate

0

에서 그 값을 받게됩니다, 모든 단일 페이지 요청에 그들을 추가로 :

페이지에 대해 Viewstate가 활성화되어 있는지 확인하십시오. b.) 컨트롤에 원래 지정된 것과 동일한 ID로 컨트롤을 만들도록 모든 페이지로드시 컨트롤을 다시 만듭니다. 또한 viewstate가로드되기 전에이 작업을 수행해야합니다 (Onit 또는 PreInit 메소드에있는 것이 좋음). 페이지 수명주기는 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

관련 문제