updatepanel 내의 gridView는 DOM에서 렌더링하지 않습니다.
-
03-07-2019 - |
문제
ASP Net Ajax 툴킷을 사용하고 있으며 GridView
내 UpdatePanel
, 모든 것이 잘 작동합니다.
내가 몇 가지를 실행하려고 할 때 JQuery
생성해야 할 테이블에 대해 GridView
(또는 테이블 HTML
) 반환 된 돔에서. 나는 이것이 모두 ASP 생성에 의해 수행된다고 가정합니다. Javascript
?
a에 대한 조치를 어떻게 수행 할 수 있습니까? GridView
그것은 안에 있습니다 UpdatePanel
?
해결책
ASP.NET은 특정 조건에서 제어 이름을 관리합니다. 생성 된 소스를보고 생성 될 때 asp.net이 제공 한 이름으로 제어를 참조 할 수 있습니다. 아마 당신이 마크 업에서 준 이름이 아닐 것입니다.
다른 팁
CodeBehind에서 javaScript를 생성 할 수 있다면 Page_Load에서 angistence에서 gridView1.clientID 등을 JavaScript에 주입 할 수 있습니다. (예를 들어 여기에 텍스트 상자를 사용하지만 같은 개념을 따릅니다.)
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);
}
내가 생각할 수있는 세 가지 해결책이 있습니다. Dave가 제안한대로 ClientID를 사용하여 서버에서 JavaScript를 주입하는 첫 번째 첫 번째는 작동하지만 실제로 지저분 해집니다. 나는 이것을 한동안 수행했지만 서버 측 및 클라이언트 측의 긴밀한 결합으로 인해 문제가 발생합니다.
두 번째는 CSS 클래스와 같은 엔티티를 식별하는 다른 방법을 제공하는 것입니다. 이것은 첫 번째 옵션보다 낫지 만 똑바로 유지 해야하는 외부 클래스 정의가 많이 남습니다.
내가 선호하는 솔루션은 선택기 엔진이있는 jQuery와 같은 JavaScript 프레임 워크를 사용하는 것입니다. 이렇게하면 영리한 선택과 DOM Traversal을 통해 독특한 쓰레기를 둘러 볼 수 있습니다.
MyControl이라는 컨트롤이 있다고 가정 해 봅시다. ASP.NET은 그 전에 거대한 네임 스페이스를 생성하므로 렌더링 할 때 ID 충돌이 없습니다. 그러나 MyControl로 끝나는 ID가있는 모든 객체를 선택하는 $ ( '[id $ = myControl]')를 수행하여 모든 MyControl을 선택할 수 있습니다. 다른 프레임 워크에서는이 작업을 수행하는 유사한 방법이있을 수 있지만 예를 들어 예시를 제시 할만 큼 익숙하지 않습니다.