2009-01-19 3 views
2

내가 만든 ASP.NET 프로젝트에서 Table의 하위 클래스를 만들었습니다. 이 테이블은 RowCreator를 호출 할 수있는 TableRows 및 TableCell을 포맷하고 생성하는 클래스를 사용합니다. 그래서 MyTable은 rowCreator.CreateRow()를 호출하고 그 안에 많은 장점이있는 TableRow를 가져옵니다.ASP.NET TextBox에 올바른 ClientID를 얻으려면 어떻게해야합니까?

이 TableRow에는 RowClreator 클래스에 의해 추가 된 onblur 이벤트에서 javascript 메서드를 트리거해야하는 TextBox가 있습니다.

Attributes.Add("onblur", "javascriptMethod('" + this + "');")

작동하지 않습니다

textBox.Attributes.Add("onblur", "javascriptMethod('" + textbox.ClientID + "');");

나는 또한에 onblur 이벤트를 추가하는 방법을 구현하는 텍스트 상자의 서브 클래스를 생성 시도했습니다. ID는 텍스트 서브 클래스의 네임 스페이스에 불과합니다.

그리고 자바 스크립트 방법

은 매우 간단합니다 :

function javascriptMethod(boxId) { alert(boxId); }

의 문제점은, 나는 텍스트 상자 컨트롤이 아직 컨트롤 컬렉션에 추가되지 않은 때문입니다 추측하고있어, 그 boxId 올바른 클라이언트 ID가 아닙니다. 서버 측 ID와 동일합니다. 페이지에 Controls.Add를 사용하여 행을 추가하지 않고도 적절한 ID를 얻는 방법이 있습니까? 다른 제안?

내가 이것을하고있는 이유는 변경되었을 때마다 자바 스크립트 함수에서 텍스트 상자 내용을 읽는 것입니다. 아마 이것을 할 수있는 더 좋은 방법이 있을까요?

답변

7

이에 자바 스크립트 호출을 변경할 수 있습니다 :

function javascriptMethod(textbox) { alert(textbox.id); } 

당신의 클라이언트 ID를 사용할 필요가 없습니다 그 방법 :

textBox.Attributes.Add("onblur", "javascriptMethod(this);"); 

그런 다음 당신은 당신의 자바 스크립트 방식으로 텍스트 상자에 액세스 할 수 있습니다 텍스트 박스 컨트롤.

+0

간단하고 우아한 해결책. – Raithlin

관련 문제