2012-08-28 7 views
0

내가있는 경우 :참조 웹 컨트롤의 ID

txtField1.Text = "value"; 

작동합니다

<asp:TextBox ID="txtField1" runat="server"></asp:TextBox> 

그런 다음 내에서 코드 숨김 나는 그것 "된 ClientID"하여 해당 웹 컨트롤에 액세스 할 수 있습니다 ,하지만 나는이 방법을 시도한 그래서 참조로 동일한 웹 컨트롤에 액세스하는 다른 방법을 원한다 :

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1); 
myTxtField.Text = "value"; 

그리고 나는 점점 오류 : "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 내가이 일을 제대로하고 있는지 또는 문자열을 전달하여 웹 컨트롤의 ID를 참조 할 수있는 다른 방법이 있는지 알고 싶습니다.

+0

흥미롭게도 텍스트 상자를 리터럴로 전환하면 잘 동작합니다. – MaxPRafferty

+0

어쨌든 나는 전에 그런 행동을 보았다. 지금은 작동하도록했습니다. 그러나 참조로 업데이트되지 않는다는 것에 실망합니다. 업데이트하려고하는 요소의 복사본을 만듭니다. – BumbleB2na

+0

내 대답보기 - 그것은 나를 위해 참조로 작동합니다. – MaxPRafferty

답변

2
TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1); 

컨트롤이 ContentPageMasterPage에 있으면 null입니다. 그런 다음이를 직접 참조해야합니다 (아래 그림 참조).

내가 여기에이 문제에 대해 뭔가를 작성했습니다 : 물론 https://stackoverflow.com/a/8781131/284240

는 또한 제어가 다른 ID가있는 경우 null을 반환 또는 것이라고는 페이지가 아닌 다른 NamingContainer에 있다면 (f.e의 GridView에서.).

사이드 참고 :

Then in my code-behind I can access that web control by its "ClientID":

txtField1.Text = "value"; 

txtField1ID하지 ClientID하고 실제로 직접 컨트롤을 참조하고 있습니다.

0

이 유효한 코드와 이드 "txtField1" 또는 텍스트 상자 컨트롤 asp:TextBox이없는이 될 수있는 오류의

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1); 
myTxtField.Text = "value"; 

이유를 일해야 몇 가지를 들어 페이지

+0

네 말이 맞아.하지만 컴파일러가 try/catch로 감싸거나 널 (null)에 대한 검사를 원한다. – BumbleB2na

0

에없는 그것은 int를 좋아하지 않는 이유입니다. 다음과 같이 ToString()을 호출하십시오.

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + (1).ToString()); 
+0

int에 변수를 넣으면 처음에는 작동합니다. int num = 1; TextBox myTxtField = (TextBox) Page.FindControl ("txtField"+ num); – MaxPRafferty

관련 문제