2014-04-29 1 views
0

헤더 및 항목 템플릿에 대한 확인란이있는 gridview가 있습니다. 지금은 VB에서 자바 스크립트로 체크 박스 ID를 전달하려면 다음과 같습니다. 함수가 될 것이다 자바 스크립트gridview에서 체크 박스 ID를 vb.net에서 javascript로 전달하는 방법

Protected Sub RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim headerchk As New CheckBox 
     headerchk = DirectCast(gridview.HeaderRow.FindControl("chkheader"), CheckBox) 
     Dim childchk As CheckBox = DirectCast(e.Row.FindControl("chkRow"), CheckBox) 
     childchk.Attributes.Add("onclick", "javascript:Selectchildcheckboxes('" + headerchk.ClientID + "')") 'but this line gives me error 
    End If 
End Sub 

,

function SelectheaderCheckboxes(headerchk) 
{ 
    if (headerchk.checked) 
    { 
     //code 
    } 
} 

내가 무엇입니까 오류 "개체 참조가 개체의 인스턴스로 설정되지 않습니다".

+0

어떤 오류가 발생합니까 ?? –

+0

그리드에서 시스템은 동일한 컨트롤을 행 수만큼 복제하기 때문에 런타임에 시스템은 chkRow에 대해 다른 ID를 생성합니다. 그래서 실행 시간에 chkRow ID가 다를 것입니다. 달성하고자하는 것은 무엇입니까? 머리글 선택 상자에서 모든 확인란을 선택해야합니까? 또는 다른 무엇인가? –

답변

0

대신 서버 측에 속성을 추가하고 디자인하는 동안 onclick 이벤트를 추가하고 자바 스크립트에서 위에 다음 행을 추가하십시오.

이 라인은

<asp:TemplateField> 
<ItemTemplate> 
    <asp:CheckBox ID="chkRow" onclick="javascript:Selectchildcheckboxes();" runat="server"/> 
</ItemTemplate> 
</asp:TemplateField> 
+0

감사합니다. –

1

그것의 아주 간단한,

var gvcheck = document.getElementById('<%=gridview.clientid %>'); 
    var chks = gvcheck.rows[0].getElementsByTagName("input"); 
    header = chks[`index of your checkbox`].id; 

디자인이 같아야의 headerCheckbox을위한 것입니다.

childchk.Attributes.Add("onclick", "javascript:Selectchildcheckboxes(" + headerchk.ClientID + ")") 

으로 변경 했으므로 문자열로 전달했습니다. 하지만 당신은 그것을 이드로 전달해야합니다.

관련 문제