동적으로 추가 된 텍스트 상자에서 데이터를 검색하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/231739

문제

IM 텍스트 상자 (고정 된 수의 텍스트 상자가 아님)를 ASP.NET 페이지의 양식에 동적으로 추가하면 이러한 텍스트 상자에서 데이터를 다시 읽으려면 어떻게해야합니까?

도움이 되었습니까?

해결책

Postback의 컨트롤에 액세스하려고한다고 가정하면 초기로드에서 생성 된대로 동적 컨트롤을 정확하게 다시 제작 한 다음 페이지의 FindControls 메소드를 사용하여 컨트롤을 찾으십시오. TextBox1, TextBox2 등과 같은 ID로 텍스트 상자를 만드는 데 도움이 될 것입니다.

다른 팁

request.params를보고 거기에서 추출하십시오. 물론 당신은 그들에게 구별 할 수 있도록 신분증을 주어야 할 것입니다.

내가 작업 한 모든 ASP.NET 앱에서 .NET은 서버 컨트롤의 ID를 생성 할 때 다음 알고리즘을 사용하는 것을 좋아합니다.

ctl00$cphBody$[ControlID]

동적으로 생성 된 텍스트 상자에서 데이터에 액세스 할 때이 알고리즘을 사용해보십시오.

추가 할 때 이름/ID를 제공해야하며, 그 이름을 사용하여 참조 할 수 있습니다.

그렇지 않다면, 당신의 Dom을 JavaScript로 걸어 가서 당신이 만든 양식 안에서 그들을 찾으십시오. 그들은 당신이 그들을 삽입 한 것과 같은 순서로 나타납니다.

마지막으로, 그들은 모두 당신의 페이지에 게시/GET 입력으로 사용할 수 있으므로 다른 이름을 할당하는 한 모든 것을 볼 수 있어야합니다.

-아담

텍스트 상자를 동적으로 만들 때 (아마도 JavaScript를 사용하지만 ASP.NET 컨트롤에 대해서도 마찬가지) 특정 패턴으로 이름을 제공합니다. 당신이 할 수있는 사람 인정하다 나중에.

서버 측에서, 모든 이벤트 핸들러는 page_init 이후에 반복 할 수 있습니다. 요청 양식 수집.

request.param은 응용 프로그램에 크로스 사이트 요청 위조를 적용하는 데 사용될 수 있으므로 (공격자가 응용 프로그램이 게시물을 해석하는 것과 동일하게 해석 할 수있는 GET 요청을 발행하도록 유혹 할 수 있기 때문에 request.param을 사용하려는 유혹을받지 마십시오. 일반적으로 좋은 것은 아닙니다).

동적 ASP.NET 컨트롤을 추가하는 경우 (예 : Page_Render에서) 컨트롤을 재구성하고 해당 속성을 사용할 수도 있습니다.

FindControl을 사용하고 TextBox ID를 전달하여 게시 될 때 텍스트 상자의 인스턴스를 가져올 수 있습니다. 텍스트 속성에는 페이지로드 단계 또는 이후 사이클에있는 경우 데이터가 포함되어 있습니다. 동적 컨트롤을 추가 할 때 CreateChildControls 메소드를 무시하고 동적 컨트롤을 추가하여 사이클 의이 단계에서 계층 구조를 제어하십시오.

ASP.NET에서 모든 Postback은 수업의 새로운 인스턴스입니다. 이전 포스트 백 또는 첫 번째보기에서 이러한 컨트롤을 만든 경우 이전 인스턴스의 나머지 부분과 수집 된 쓰레기였습니다. 따라서이 새 인스턴스의 컨트롤을 사용하려면 다시 만들어야합니다. 해당 컨트롤에로드 된 상태 정보가 필요한 경우 (사용자가 입력 한 모든 값 포함) ~ 전에 ViewState가로드되므로로드 이벤트가 아닌 Init 이벤트 중에 수행합니다.

동적 컨트롤을 만들려면 일반적으로 ASP.NET 자리 표시 자 제어를 사용 하고이 컨테이너에 동적 컨트롤을 추가합니다.

각 동적 제어에 ID를 줄 것입니다.

그런 다음 자리 표시 자에서 FindControl을 사용하여 동적 컨트롤에 액세스 할 수 있습니다.

런타임에 추가 한 제어를 의미하기 위해 "동적 컨트롤"이라고 말합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top