数据库中有个学生表student,我使用SSH2框架,通过名为findForPage的action将数据库表student的内容读出,并转为json字符串,输出到页面,然后通过datagrid,将列表显示出来
首先我们有个表格
<div region="center" border="false"> <table id="tt"></table> </div>
然后在javascript里
<script type="text/javascript"> $(function(){ $("#tt").datagrid({ url: "findForPage", title:"学生基本信息管理", frozenColumns : [ [ { field : "ck", checkbox : true } ] ], singleSelect : true, iconCls : "icon-ok", width : 800, height : 300, fit : false, pageSize : 5, pageList : [ 5, 10, 15, 20 ], columns : [ [ { field : "id", title : "学号", align : "center" }, { field : "name", title : "姓名", align : "center" }, { field : "classes", title : "班级", align : "center", formatter:function(value,row,index){ return row.classes.classname; } } ] ], toolbar : [ {text:"添加", iconCls:"icon-add",handler:function(){openadd();}}, "-", {text:"删除", iconCls:"icon-no",handler:function(){del();}}, "-", {text:"修改", iconCls:"icon-edit",handler:function(){openedit();}} ], pagination : true }); }); </script>
主要看这几行
{ field : "classes", title : "班级", align : "center", formatter:function(value,row,index){ return row.classes.classname; }
这里的formatter:function(value,row,index)
之所以在这一列用formatter,是因为此列(classes)是外键列,在持久化类student中是Classes对象,我们要取的是此对象中的classname属性的值。也就是说,在这里是二层属性,或者说是子属性。
对于datagrid来说,子属性是不能直接读出的。即,如果你写field:"classes.classname",是无效的,这时就需要formatter
看后面function括号里的三个参数:value-字段值,row-行记录数据,index-行索引
看function里面我们用的是return row.classes.classname;通过这样读出了这个子属性classname
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。