rows是datagird的固定参数
看下图:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxgTM5ITMzAjM0EjNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
由于我没有使用分页,所以
total
为
NaN
。
这里采用的原生
Servlet
+
JDBC
完成的宿舍管理系统中的其中一小点功能。
下面开始入坑:
1. 前端数据表格是这样的:
<script type="text/javascript">
$(function() {
$('#dg').datagrid({
title : "宿舍成员信息",
iconCls : "icon-more",
rownumbers : "true",
idField : 'sid',
loadMsg : '数据正在加载,小伙伴耐心等待哦!!',
striped : "true",
fitColumns : "true",
url : "getStudentByHid",
columns:[
[
{field:'sid', title:'学号', width:'80', resizable:'false'},
{field:'sname', title:'姓名', width:'80', resizable:'false'},
{field:'scollege', title:'所在学院', width:'80', resizable:'false'},
{field:'hid', title:'寝室编号', width:'80', resizable:'false'},
{field:'ssex', title:'性别', width:'80', resizable:'false'},
{field:'sage', title:'年龄', width:'80', resizable:'false'},
{field:'saddress', title:'家庭地址', width:'180', resizable:'false'},
{field:'sphone', title:'联系电话', width:'140', resizable:'false'}
]
],
onLoadSuccess : function(data) {
console.log(data);
}
});
})
</script>
<table id="dg" class="easyui-datagrid" cellspacing="0" cellpadding="0"></table>
这里没什么,注意一点L就是
field
字段不要写错了。
这里打印的
data
是这样的:
因为除了管理员就两个同学在一起住。
2. Controller层
StudentSelectService sss=new StudentSelectService();
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf8");
HttpSession session=req.getSession();
UserModel user=(UserModel)session.getAttribute("usermodel");
int hid = user.getHid();
JSONObject stuList = sss.getStuByHid(hid);
PrintWriter pw=resp.getWriter();
pw.write(stuList.toString());
}
解释:
第一句设置字符编码。
第二句构建Session对象
第三句获取session中的登录用户。
第四句获取学生的宿舍号。
第五句通过宿舍号获取学生集合并转为JSON对象
然后写到前端。
这里后台打印的
stuList
数据是这样的:
{
"rows":[
{
"hid":11001,
"saddress":"湖南",
"sage":21,
"scollege":"信息工程学院",
"sid":1000,
"sname":"猪八戒",
"sphone":"15588887777",
"spower":0,
"spwt":"",
"ssex":"女"
},{
"hid":11001,
"saddress":"上海",
"sage":22,
"scollege":"信息工程学院",
"sid":1005,
"sname":"唐僧",
"sphone":"18811114444",
"spower":0,
"spwt":"",
"ssex":"男"
}
]
}
因为
"spower"
,
"spwt"
两个字段没有查。所以没有数据。
3. Service层
StudentSelectDao sd = new StudentSelectDao();
public JSONObject getStuByHid(int hid) {
JSONObject jObject = new JSONObject();
jObject.put("rows", sd.getStuByHid(hid));
return jObject;
}
解释:
通过hid查询到一个学生集合放到JSONObject中返回。
就这里。
rows
我刚开始写的是
studentList
,导致
datagird
获取不到数据。
报错:
Unable to get property 'length' of undefined or null reference
4. Dao层也贴上吧。反正也没用
public List<UserModel> getStuByHid(int hid) {
List<UserModel> list = new ArrayList<>();
String sql="select sid,sname,scollege,ssex,sage,hid,sphone,saddress from user where spower=1 and hid=?";
Connection con=null;
try {
con=JdbcUtil.getDBConnection();
PreparedStatement pst = con.prepareStatement(sql);
pst.setInt(1, hid);
ResultSet rs = pst.executeQuery();
while (rs.next()) {
UserModel user=new UserModel(rs.getInt("sid"),rs.getString("sname"),rs.getString("scollege"),rs.getString("ssex"),rs.getInt("sage"),rs.getInt("hid"),rs.getString("sphone"),rs.getString("saddress"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.closedConnection(con);
}
return list;
}
没了。