2010-03-15 3 views
2

gridview의 템플릿에 패널 컨트롤이 있습니다.
javascript 함수에서 패널을 숨기기/숨기기 해제해야합니다. 패널의 ID를 자바 스크립트에 전달해야합니다.id를 gridview의 패널 컨트롤로 설정합니다.

문제는 모든 패널의 gridview가 동일한 ID이므로 각 패널에 고유 ID를 설정해야한다는 것입니다.

<asp:Panel id= "Panel_<%# Eval("ID")%>" 

및 다른 유사하지만 항상 오류가 발생합니다 :
내가 할 노력했다.

패널은 내가 (사용자가 인증 된 경우 확인 후) 코드 숨김으로 설정해야하기 때문에

내가 무엇을 할 수있는 서버 측을 할 필요, 다른 컨트롤을 포함?

p.s.
그것은 FindControl에서 찾을 수 있고 다른 컨트롤을 포함 할 수있는 다른 컨트롤 인 Panel 일 필요는 없습니다.

업데이트 :

I set the the js event in code behind: 
protected void gvw_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 

    if (UserIsAuthenticated) 
    { 
     HyperLink title = e.Row.FindControl("lnkTitle") as HyperLink; 
     Panel panel = e.Row.FindControl("panel") as Panel; 
     title.Attributes.Add("onmouseover", "ShowHidePanel(" + panel.ClientID +")"); 
     //All get the same id!!! 
    } 
    } 
} 

답변

2

당신이 컨트롤의 ClientID 속성을 사용합니다 자바 스크립트에서 서버 측 컨트롤의 ID를 사용하려면.

<script type="text/javascript"> 
function hidePanel(panelId){ 
    var panel = document.getElementById(panelId); 
    panel.style.display = 'none';  
} 
</script> 

그래서 당신은 hidePanel(<%=panel.ClientID%>); 같은 일부 핸들러에서 사용할 수 있습니다.

+0

그리드 뷰 안에서 이렇게하면 N hidePanel() 함수가 생깁니다. – M4N

+0

@ Martin 당신이 옳습니다. 'hidePanel()'호출이 업데이트되었습니다. – Li0liQ

0

난 당신이 (단일 등급의 사용 및 따옴표주의)를 사용한다, 고유 한 값으로 패널의 ID를 설정하는 추측 : 비록

<asp:Panel id='<%# "Panel_" + Eval("ID") %>' 

을, 이것은 아마도 여전히 도움이되지 않습니다 클라이언트 쪽 ID는 패널의 부모 컨트롤 ID와 패널의 ID (예 : ctl00_MyGridView_Panel_1.

다른 방법으로 패널의 CssClass 속성을 고유 한 값으로 설정할 수 있습니다.이 값은 ASP.NET에서 변경되지 않으므로 클라이언트 쪽 코드를 기반으로 패널을 선택할 수 있습니다. 예 : jquery를 사용할 때 :

$('Panel_1').click(...) 
+0

jquery를 사용하고 있지 않습니다 ... – mariki

0

ASP.NET에서 ID를 생성하도록 허용하십시오. 그런 다음 ClientID 속성을 사용하십시오.

동일한 템플릿 열에있는 한 바로 사용할 수 있어야합니다. 뭔가 이런 식으로 :

+0

질문에 쓴대로, 이것은 gridview 내부입니다 ... 모든 패널에는 동일한 ID와 클라이언트 ID가 있습니다. – mariki

+0

그들은 동일한 ClientID를 가지지 않습니다. 이것이 바로 클라이언트 ID입니다. 고유 ID로 렌더링되고 ClientID 속성은 고유 ID에 액세스하는 방법입니다. –

+0

코드 숨김에 이벤트 (attributes.add)를 설정하면 동일한 ID를 얻습니다. – mariki