2012-04-18 2 views
0
<asp:ControlParameter ControlID="ddListPlayerPointSystems" Name="profileid" PropertyName="SelectedValue" /> 
      <asp:ControlParameter ControlID="ddListCmty" Name="cmty" PropertyName="SelectedValue" /> 
      <asp:ControlParameter ControlID="ctl00$MainContent$TabContainer1$TabPanel1$FormView3$pointsTextBox" Name="InsertPts" PropertyName="Text" Type="Decimal" /> 

첫 번째 컨트롤 매개 변수에서 dropdownbox id를 호출 할 수 있지만 pointsTextBox라는 텍스트 상자 ID를 호출 할 수없는 이유를 이해하는 데 문제가 있습니다. 여러 패널이있는 asp ajax 탭 컨테이너가있는 마스터 페이지를 사용하고 있습니다. 내가 벗을 경우 "ctl00 $ MainContent $ TabContainer1 $ TabPanel1 $ FormView3 $"내가 컨트롤이 발견되지 얻을하지만 난이 다른 두 controlparametersasp.ControlParamter 컨트롤 ID 고침

편집 작동 이유를 잘 모릅니다 그래서 나는 해결책을 찾아 내 문제. @TheGeekYouNeed와 @JamesJ 덕분에 필자는 특정 텍스트 상자에 더 긴 경로 이름이 필요한 이유를 알았습니다. (방울은 탭 컨테이너 외부에 있으므로 직접 이름이 작동했습니다). 하지만 나는 그 텍스트 상자의 값을 '< % # Bind ("name", "{0 : n}") %>'를 통해 지정 했으므로 그 대신에 ASPP 매개 변수 대신 ControlParameter like :

"<asp:Parameter Name="name" Type="String" />" 

문제는 내가 어떻게 작동하는지 완전히 이해하지 못한다는 것입니다.

답변

0

pointsTextBox의 ControlID는 서버 측에서 'ct100 $ MainContent $ TabContainer..etc ...'가 아닙니다.

FindControl ("pointsTextBox")을 사용하여 텍스트 상자 컨트롤에 대한 참조를 얻을 수 있도록 코드 뒤에 COntrolID를 설정하십시오.

당신은 같은 것을 할 수 : 그래서 코드를 주장하고 있지 않다,

TextBox t = this.FindControl("pointsTextBox") as TextBox; 
if(t != null) 
{ 
    ddListPlayerPOintSystems.Add(new { COntrolID = t, Name = "InsertPts", PropertyName="Text", Type="Decimal"}); 
} 

나는 그것을 테스트하지 않았습니다 완벽하지만, 당신이 따라야 할 방법이 여기에 설명된다.

+0

그러나 전체 이름을 추가하면 모두 잘 작동하지만 드롭 다운에는 필요하지 않은 것처럼 보입니다. 그리고 'ct100 $ MainContent $ TabContainer..etc'는 페이지가 실행 된 후 전체 이름이고 asp는 이름을 변경합니다. 텍스트 상자에 더 긴 경로 이름이 필요한 이유에 대한 설명을 찾고 있습니다. – user1342169

+1

'DropDownList'는 페이지에서 직접 액세스 할 수 있기 때문에 필요하지 않습니다. 반면에 다른 컨트롤은 데이터 바인딩 된 컨트롤 또는 유사한 것으로 중첩 될 가능성이 있습니다. –

관련 문제