2012-02-29 36 views
0

私のユーザコントロールには、GridViewがあります。 GridViewのヘッダーのチェックボックスをオンにすると、すべてのチェックボックスを選択します。 私のユーザーコントロールは、ページ内で複数回使用できます。 だから私はこれを試してみる。プロパティ 'length'の値を取得できません:オブジェクトがnullまたは未定義です - Javascriptエラー

私のGridViewの

<asp:GridView ID="GridView" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <HeaderTemplate> 
       <asp:CheckBox ID="chkHeader" runat="server" /> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkEach" runat="server" /> 
      </ItemTemplate> 
      . 
      . 

これは私のC#のコード

CheckBox chkAll = gvAttachment.Controls[0].Controls[0].FindControl("chkHeader") as CheckBox; 
    if (chkAll != null) 
    { 
      chkAll.Attributes.Add("onclick", "SelectAllChkBox('" + chkAll.ClientID + "','" + GridView.ClientID + "');"); 
    } 

これは私のjavascriptの

function SelectAllChkBox(value , grid) { 
    for (var i = 1; i < grid.all.length; i++) { 
     grid.all[i].checked = value.checked; 
    } 
} 

あるしかし、私はこのエラーを得ました。

Unable to get value of the property 'length': object is null or undefined 

私のコードに間違いがありますか?

答えて

1

配列は0から始まる:

function SelectAllChkBox(value , grid) { 
    for (var i = 0; i < grid.all.length; i++) { 
     grid.all[i].checked = value.checked; 
    } 
} 
+0

grid.allが定義されていないこの機能を試してみてください...私は何を考えて – Asken

+0

は、そこには「すべて」のプロパティがすべてではありませんが、私はあなたが使用しているオブジェクトを知らないということです。 「すべて」の属性があるかどうか調べてみてください。 – Codebeat

+0

私は、「すべて」のプロパティはまったくありませんが、私はあなたが使用しているオブジェクトを知らないと思います。 「すべて」の属性があるかどうか調べてみてください。 Firebugを使用してDOMをブラウズし、コードをデバッグしてください。 – Codebeat

2

パラメータグリッドを使用すると、「すべて」を持っていないことを意味し、グリッドビューのID(文字列)です。しかし、長さは "グリッド"で動作します。あなたはC#からオブジェクトを渡すことはありません。

クライアント側のすべてのチェックボックスを見つけて、trueまたはfalseの値に基づいてチェックを行う必要があります。

+1

タスクを簡略化するためにjQueryのようなライブラリを使うことをお勧めします: '$(grid).find(" input [type = 'checkbox'] ")。attr( 'checked'、true);' –

+0

これはOKです私のために。しかし、残念ながら、私はそれを使用することはできません。 'function SellectAllChkBox(value){var grid = document.getElementById(" <%= gvAttachment.ClientID%> "); for(var i = 1; i kevin

+0

もう少し説明してください...なぜあなたはそれをできませんか? – Asken

0

function SelectAllChkBox(value , grid) { 
    var n = document.getElementById("grid").rows.length; 
    for (var i = 0; i < n; i++) { 
     grid.all[i].checked = value.checked; 
    } 
} 
+0

コードが完全ではありません。 for-loopの内部ではまだ失敗します。 – Asken

+0

ええ、私は同じエラーがあります。 – kevin

関連する問題