2010-04-14 143 views
1

我不明白我在做什麼錯在這裏!我不斷收到數據錯誤。但我驗證了JSON,沒關係......YUI DataTable與JSON和客戶端過濾數據錯誤

這裏是來自YUI Datatble示例的JavaScript(稍作修改)。



<pre class="prettyprint"><code> 

<script type="text/javascript"> 
YAHOO.util.Event.addListener(window, "load", function() { 
    //var Ex = YAHOO.namespace('example'); 

    var dataSource = new YAHOO.util.DataSource("jsondb/json_meta_proxy.html",{ 
     responseType : YAHOO.util.DataSource.TYPE_JSON, 
     responseSchema : { 
      resultsList: "records", 
      fields: [ 
          {key:"idprojet"}, 
          {key:"nomprojet"} 
        ], 
        metaFields: { 
        totalRecords: "totalRecords" 
        } 
     }, 
     doBeforeCallback : function (req,raw,res,cb) { 
      // This is the filter function 
      var data  = res.results || [], 
       filtered = [], 
       i,l; 

      if (req) { 
       req = req.toLowerCase(); 
       for (i = 0, l = data.length; i < l; ++i) { 
        if (!data[i].state.toLowerCase().indexOf(req)) { 
         filtered.push(data[i]); 
        } 
       } 
       res.results = filtered; 
      } 

      return res; 
     } 
    }); 

    var cols = [ 
     {key:"idprojet"}, 
      {key:"nomprojet"} 
    ]; 

    var paginateur = new YAHOO.widget.Paginator({ 
     rowsPerPage : 25, 
     pageLinks  : 10 
    }); 

    var conf = { 
     paginator : paginateur, 
     sortedBy: {key:'idprojet', dir:YAHOO.widget.DataTable.CLASS_ASC} 
    }; 

    var dataTable = new YAHOO.widget.DataTable('tbl',cols,dataSource,conf); 

    var filterTimeout = null; 
    var updateFilter = function() { 
     // Reset timeout 
     filterTimeout = null; 

     // Reset sort 
     var state = dataTable.getState(); 
      state.sortedBy = {key:'idprojet', dir:YAHOO.widget.DataTable.CLASS_ASC}; 

     // Get filtered data 
     dataSource.sendRequest(YAHOO.util.Dom.get('filter').value,{ 
      success : dataTable.onDataReturnInitializeTable, 
      failure : dataTable.onDataReturnInitializeTable, 
      scope : dataTable, 
      argument: idprojet 
     }); 
    }; 

    YAHOO.util.Event.on('filter','keyup',function (e) { 
     clearTimeout(filterTimeout); 
     setTimeout(updateFilter,600); 
    }); 
}); 
</script> 

,這裏是在文件 「jsondb/json_meta_proxy.html」 JSON數據



    { 
    "recordsReturned": 1, 
    "totalRecords": 1, 
    "startIndex": 0, 
    "sort": "idprojet", 
    "dir": "asc", 
    "records": [ 
     { 
      "idprojet": "11256", 
      "nomprojet": "" 
     } 
    ] 
} 

您的幫助非常感謝!

回答

0

如果您在StackOverflow上沒有得到答案,您可以嘗試將您的問題發佈到YUI開發人員論壇:http://yuilibrary.com/forum。許多YUI專家,包括最有經驗的DataTable開發人員,都在那裏閒逛。

-Eric

+0

@Eric Miraglia在YUI團隊幹得不錯。儘管我大量使用YUI小部件,但您的「答案」聽起來像是一個評論。通過使用YUI DATATABLE http://jsbin.com/ideha查看我的工作** **單擊和雙擊**它工作正常 – 2010-04-17 22:56:53

2

更改爲TYPE_JSARRAY解決了這個問題...

感謝您的意見埃裏克! 我去過這個論壇,它確實是數據表達問題的地方。