2011-12-20 6 views
1

tablesorterに問題があります。 jquery.tablesorter.jsから[0]以上tablesorter n [0] undefined

function appendToTable(table,cache) { 

      if(table.config.debug) {var appendTime = new Date()} 

      var c = cache, 
       r = c.row, 
       n= c.normalized, 
       totalRows = n.length, 
       checkCell = (n[0].length-1), 
       tableBody = $(table.tBodies[0]), 
       rows = []; 

      for (var i=0;i < totalRows; i++) { 
       rows.push(r[n[i][checkCell]]); 
       if(!table.config.appender) { 

        var o = r[n[i][checkCell]]; 
        var l = o.length; 
        for(var j=0; j < l; j++) { 

         tableBody[0].appendChild(o[j]); 

        } 

        //tableBody.append(r[n[i][checkCell]]); 
       } 
      } 

未定義では、コードスニペットである NがcheckCell =という行(N [0] .LENGTH - 1)である:エラーがありますエラーが発生しています。

未定義のオブジェクトが関数にどのように渡されているのか分かりません。 tablesorterは私のプロジェクトの1つでうまくいきましたが、このプロジェクトでうまく動作しませんでした。

[編集] これはtablesorterを呼び出すためのコードスニペットです。私がtablesorterとtablesorterPagerをコメントアウトすると、私のコードの中に他のものがなくなります。

$reviewTable = $("#reviewTable"); 
$reviewTable.tablesorter(); 
$reviewTable.tablesorterPager({ container: $("#pager"), size: 100, widgets: ['zebra'] }); 

以下は、私が覚えている場合は、テーブルが最初に(TBODY)空であるので、あなたがそのエラーを取得しているクライアント側

<asp:Repeater ID="reviewRepeater" runat="server"> 
    <HeaderTemplate> 
     <table cellpadding="0" cellspacing="0" class="MarkAsReceived" id="reviewTable"> 
      <thead> 
       <tr class="even"> 
        <th align="left">Review ID</th> 
        <th align="left">Date Submitted</th> 
        <th align="left">Rating</th> 
        <th align="left">Image</th> 
        <th align="left">ProductId</th> 
        <th align="left">Status</th> 
        <th align="left">Name</th> 
       </tr> 
      </thead> 
      <tbody> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "ReviewId")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "SubmissionDate")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Rating")%></td> 
      <td align="left"><%#hasImage(DataBinder.Eval(Container.DataItem, "ReviewerImages"))%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "ProductId")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Status")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Nickname")%></td> 
     </tr> 
    </ItemTemplate> 
    <AlternatingItemTemplate> 
     <tr> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "ReviewId")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "SubmissionDate")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Rating")%></td> 
      <td align="left"><%#hasImage(DataBinder.Eval(Container.DataItem, "ReviewerImages"))%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "ProductId")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Status")%></td> 
      <td align="left"><%#DataBinder.Eval(Container.DataItem, "Nickname")%></td> 
     </tr> 
    </AlternatingItemTemplate> 
    <FooterTemplate> 
      </tbody> 
     </table> 
     <asp:Label ID="lblEmpty" Text="No Items." runat="server" Visible='<%# reviewRepeater.Items.Count == 0 %>'></asp:Label> 
    </FooterTemplate> 
</asp:Repeater> 

答えて

3

です。だから、これからのコード行を変更します。これに

checkCell = (n[0].length-1), 

checkCell = totalRows ? (n[0].length - 1) : 0, 

あなたが興味を持っている場合、私はforkedをしたし、(上記の変更を含む)の拡張機能の多くを追加し、元のtablesorterへgithubのプラグイン。