0

我正在做一个前端项目,使用 YUI 数据表来显示一些数据。我正在使用 Spring MVC 框架,控制器将从数据库中获取数据并将其以 JSON 格式返回给视图。

我的数据源是一个返回 JSON 数据的 url。但是,由于 JSON 数据是从我从数据库中提取的数据生成的。所以数据表的列号是不固定的。

有没有一种方法可以使用 ColumnDef 从我的数据源动态加载来呈现数据表?

这是我尝试使用 sample.jsp 中的简单数据的一种方法,但不知何故它不起作用:

<script type="text/javascript">
YAHOO.util.Event.addListener(window, "load", function() {
    YAHOO.example.Basic = function() {
        var myData = {"userInfo":[
                                   {"name":"Smith, Paul","age": "7","level":"","experience":"31","subtotal":"$0.00"},
                                   {"name":"Jones, Steve","age":"","level":"","experience":"60","subtotal":"$0.00"},
                                   {"name":"Dow, James","age":"","level":"","experience":"31","subtotal":"$0.00"},
                                   {"name":"Reid, Jake","age":"","level":"","experience":"6","subtotal":"$10.00"},
                                   {"name":"Smith, Nancy","age":"34","level":"3r","experience":"8","subtotal":"$0.00"}
                               ]};

    function getColumns(o, key) {
        var k, cols = [], value = o[key][0];

        if (value && typeof value === 'object') {
            for (k in value) {
                if (value.hasOwnProperty(k)) {
                    getColumns(value, k);
                    if (value.constructor !== Array) {
                        cols.push(k);
                    }
                }
            }
        }

        return cols;
    }

    var myColumns = getColumns(myData, "userInfo");

    var myDataSource = new YAHOO.util.DataSource(myData);
    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
    myDataSource.responseSchema = {
            fields: columns
        };
    var myDataTable = new YAHOO.widget.DataTable("dataTable",
            myColumns, myDataSource, {initialLoad: true, caption: tableCaption});

    return {
        oDS: myDataSource,
        oDT: myDataTable
    };

}();

});

4

0 回答 0