2009-01-03 5 views
3

저는 ASP net Ajax 툴킷을 사용하고 있으며 안에 GridView을 가지고 있습니다. 모든 것이 정상적으로 작동합니다.UpdatePanel 내의 Gridview가 DOM에서 렌더링되지 않습니다.

생성해야하는 테이블에 대해 JQuery을 실행하려고하면 반환되는 DOM에 GridView (또는 테이블 HTML)의 기호가 없습니다. 이 모든 것이 ASP에 의해 완료되었다고 가정합니다 Javascript?

GridView에서 UpdatePanel 내에있는 작업을 수행하려면 어떻게해야합니까?

답변

2

ASP.NET은 특정 조건에서 컨트롤의 이름을 변경합니다. 생성 된 소스를보고 ASP.NET이 생성 될 때 ASP.NET에서 제공 한 이름으로 컨트롤을 참조하는지 확인할 수 있습니다. 아마 당신이 마크 업에서 쓴 이름이 아닙니다.

0

코드 숨김에서 JavaScript를 생성 할 수있는 경우에는 Page_Load for insistence에서 GridView1.ClientID 등을 자바 스크립트에 삽입 할 수 있습니다. (예를 들어 TextBox를 사용하지만 동일한 개념을 따릅니다.)

protected void Page_Load(object sender, EventArgs e) 
{ 
    string js = "$(document).ready(function(){$(\"#" + this.TextBox1.ClientID + "\").text('hello world');});"; 
    HtmlGenericControl script = new HtmlGenericControl("script"); 
    script.Attributes.Add("type", "text/javascript"); 
    script.InnerHtml = js; 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "key", js, true); 
} 
0

내가 생각할 수있는 세 가지 해결책이 있습니다. 첫 번째, Dave가 제안한 ClientID를 사용하여 서버에서 자바 스크립트를 삽입하면 작동하지만 실제로 지저분 해집니다. 나는 잠시 동안 이것을했지만 서버 측과 클라이언트 측의 긴밀한 결합이 문제를 일으킨다.

두 번째 방법은 css 클래스와 같은 엔티티를 식별하는 다른 방법을 제공하는 것입니다. 이것은 첫 번째 옵션보다 낫지 만 직설적 인 클래스 정의를 많이 남겨 둡니다.

내가 선호하는 솔루션은 선택기 엔진이있는 jQuery와 같은 자바 스크립트 프레임 워크를 사용하는 것입니다. 그렇게하면, 영리한 선택과 DOM 탐색을 통해 UniqueID 쓰레기를 해결할 수 있습니다.

myControl이라는 컨트롤이 있다고 가정 해 보겠습니다. ASP.Net은 거대한 네임 스페이스를 생성하기 때문에 렌더링 전에 id 충돌이 발생하지 않습니다. myControl으로 끝나는 id를 가진 모든 객체를 선택하는 $ ('[id $ = myControl]')을 수행하여 모든 myControl을 선택할 수 있습니다. 아마도 다른 프레임 워크에서 이와 유사한 방법이있을 수 있습니다. 그러나 예를 들기에 익숙하지는 않습니다.

관련 문제