Hi,
I am trying to use the YUI datatable to display data from a JSON object which looks like this:
{"results":[{"label":"Column 1","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "},{"label":"Column 2","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."},{"label":"Column 3","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "},{"label":"Column 4","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."},{"label":"Column 5","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."},{"label":"Column 6","notes":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "}]}
I can do this fine with the standard implementation. However, the column names (labels in above object) are dynamic so I will not know them until the data reaches the page. I therefore want to define the column definitions from the datasource which I am doing in doBeforeParseData().
From reading / IRC, it has been suggested that I should be able to add columns to the data table. I want the table to look like this:
Column 1 Column 2.......
note note.....
so the above data should produce one row of data. Here's what I have so far:
function loadTable() {
  YAHOO.example.Basic = function() {
    var myColumnDefs = [];
    var myDataSource = new YAHOO.util.DataSource("/index/testajax");
    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
    myDataSource.doBeforeParseData = function (oRequest, oFullResponse, oCallback) {
       // alert(oFullResponse);
     var colDefs = [];
     var len = oFullResponse.results.length;
     for (var i = 0; i < len; i++) {
      var obj = {
       key: oFullResponse.results[i].label,
       sortable: true,
       resizeable: true
      };
      myColumnDefs.push(obj);
     }
      console.log(myColumnDefs); 
        return oFullResponse;
    };
    myDataSource.responseSchema = {
        resultsList:"results",
        fields: ["label","notes"]
    };
    var myDataTable = new YAHOO.widget.DataTable("json",
            myColumnDefs, myDataSource, {caption:"DataTable Caption"});
    return {
        oDS: myDataSource,
        oDT: myDataTable
    };
}();
}
Would be grateful for on any input on HOW to do this rather than why I shouldn't ;-)
thanks,
codecowboy