2010-04-14 142 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解决了这个问题...

感谢您的意见埃里克! 我去过这个论坛,它确实是数据表达问题的地方。