我正在尝试使用YUI DataTable显示以下JSON对象。我成功地展示了lastName,firstName,startDate,employeeCode,employeeStatus在YUI DataTable中的表现。但我无法显示内部对象中的值。在列集中,我尝试了user.userId,它在DataTable中显示为{value}。
[
{
"lastName": "MyLastName",
"firstName": "MyFirstName",
"startDate": "11-11-11",
"employeeCode": "124",
"employeeStatus": "Permanent",
"user": {
"key": {
"name": null,
"parent": {
"name": null,
"parent": null,
"id": 855,
"namespace": "",
"complete": true,
"kind": "Employee"
},
"id": 856,
"namespace": "",
"complete": true,
"kind": "Users"
},
"salt": null,
"userId": "myemail@example.com",
"status": true,
},
{
...
}
]以下是Javascript代码:
<script type="text/javascript">
YUI().use("jsonp", 'sortable', 'json-parse', 'datatable', "datatable-sort", "io", "node", function(Y) {
var nestedCols = [
{key : "employeeCode",label : "Employee Code", sortable:true},
{key : "firstName", label : "First Name",sortable: true},
{key : "lastName", label : "Last Name", sortable:true},
{key : "user.userId", label : "Email Id"},
];
Y.io('/Employee/AjaxList', {
on : {
success : function(tx, r) {
var data = Y.JSON.parse(r.responseText);
var table = new Y.DataTable.Base({
columnset : nestedCols,
recordset : data,
}).plug(Y.Plugin.DataTableSort);
table.render("#empTable");
}
}
});
});
</script>这个代码段有什么问题吗?如何在user.userId中显示DataTable的值?
注意: JSON是使用Jackson生成的,应用程序是在GAE/J中开发的
更新:
我按照@路克的建议使用了DataSource。这一次,我得到了一个空的DataTable,其中只有头。这是代码片段。
YUI().use("datasource-get", "datatable-base", "datatable-datasource","datasource-arrayschema", function (Y) {
var url = "/Employee/AjaxList?";
var dataSource, table;
dataSource = new Y.DataSource.Get({ source: url });
dataSource.plug(Y.Plugin.DataSourceArraySchema, {
schema: {
resultFields: ["firstName", "lastName"]
}
});
var cols = ["firstName", "lastName"];
table = new Y.DataTable.Base({
columnset: cols,
});
table.plug(Y.Plugin.DataTableDataSource, { datasource: dataSource });
table.render("#empTable");
table.datasource.load();
});发布于 2011-09-28 06:23:15
我从YUI论坛获得了解决方案,我在论坛上发布了以下文章:http://yuilibrary.com/forum/viewtopic.php?f=92&t=8685
下面是对我有用的代码:
YUI().use( "datasource-io", "datasource-jsonschema", "datatable-base", "datatable-datasource", "datatable-scroll",
function (Y) {
var cols = [
{ key: "name", label: 'Name' },
{ key: "email", label: "Email" },
{ key: "user.username", label: 'Username' },
{ key: "user.password", label: 'Password' },
];
car url = "/Employee/AjaxList";
var ds = new Y.DataSource.IO( {
source:url
});
ds.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultFields: [ 'name', 'email', 'user.username', 'user.password' ],
}
});
var dt = new Y.DataTable.Base({
columnset:cols } )
.plug(Y.Plugin.DataTableDataSource, {datasource:ds});
dt.render("#dtable");
dt.datasource.load();
});希望这能帮助正在与DataTable & DataSource公司做斗争的其他人。
发布于 2011-09-22 16:21:53
您需要使用数据源-jsonschema来解析嵌套的值。参见本例:http://yuilibrary.com/yui/docs/datatable/datatable-dsget.html
您应该能够遵循这些步骤,将Y.DataSource.Get替换为Y.DataSource.IO
https://stackoverflow.com/questions/7496481
复制相似问题