- 实体类中&表中
student.java
private int sclass; //关联班级-页面中是combobox
private int senterprise; //关联所属企业-页面中是combobox combobox
private int sstatus; //管理状态 -页面中是combobox select
- dao方法中
daoimpl.java
//在servlet中,接收的是从页面传来的数据,比如接收了页面中id 为 search_class,search_enterprise的数据,
//它接受数据的类型是String,(注意,虽然值是0,1 之类,但是它是String 类型)。
//那么为什么值是0,1,页面上显示的却是 文字的“java基础班”,“阿里巴巴公司”呢。----->>往下看页面的写法。
//所以在调用dao层方法,注意此时,也把参数做成了String.
public ArrayList<Student> queryStu(String sname, String sclass, String senterprise, PageUtil pageUtil) {
String sql="select * from student where 1=1 ";
//做一个集合for 动态拼接
ArrayList<Object> al=new ArrayList<>();
//动态拼接
if(sname!=null&&!sname.equals("")) {
sql=sql+ " and sname like ? " ;
al.add('%'+sname +'%');
}
//在表中是int型 不能进行模糊查询 !注意!!!!!!!!!
if(sclass!=null&&!"".equals(sclass)) {
sql=sql+ " and sclass = ? " ;
al.add(Integer.parseInt(sclass));
}
if(senterprise!=null&&!"".equals(senterprise)) {
sql=sql+ " and senterprise = ? " ;
al.add(Integer.parseInt(senterprise));
}
sql=sql+" limit ?,?" ;
al.add(pageUtil.getStartIndex());
al.add(pageUtil.getPageSize());
//把集合转成数组
Object [] obj=al.toArray();
//做一个集合for学生
ArrayList<Student> ssal=new ArrayList<Student> ();
//工具类方法
ResultSet rs= DBUtils.query(sql, obj);
try {
while(rs.next()) {
//new对象
Student s=new Student(rs.getInt("sno"),
rs.getString("sid"),
rs.getString("spwd"),
rs.getString("sname"),
rs.getString("sgender"),
rs.getInt("sage"),
rs.getString("stel"),
rs.getString("saddress"),
rs.getInt("sclass"),
rs.getInt("senterprise"),
rs.getString("smtime"),
rs.getInt("sstatus")
);
//对象放入集合里
ssal.add(s);
}
return ssal;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
- 页面中
student.html
//显示方式,用“formatter”这个方法实现!
{field:'sclass',title:'班级',width:150,
formatter: function(value,row,index){
if (row.sclass){
//含义为:combobox里加载全部班级得到一个集合,去遍历这个集合,如果集合中一个班级的编号,与 学生选定这一行的学生班级(int型的数字)相同,则返回一个 这个 班级的名字。
columns: [[
{field:'chk',checkbox: true,width:50},
{field:'sno',title:'学生编号',width:50, sortable: true},
{field:'sid',title:'用户名',width:200, sortable: true},
{field:'spwd',title:'密码',width:200, sortable: true},
{field:'sclass',title:'班级',width:150,
formatter: function(value,row,index){
if (row.sclass){
var ccList = $("#search_sclass").combobox("getData");
for(var i=0;i<ccList.length;i++ ){
//console.log(clazzList[i]);
if(row.sclass == ccList[i].cno)
return ccList[i].cname;
}
return row.sclass;
} else {
return 'not found';
}
}
},
{field:'senterprise',title:'所属公司',width:150,
formatter: function(value,row,index){
if (row.senterprise){
var eeList = $("#search_senterprise").combobox("getData");
for(var i=0;i<eeList.length;i++ ){
//console.log(clazzList[i]);
if(row.senterprise == eeList[i].eno)return eeList[i].ename;
}
return row.senterprise;
} else {
return 'not found';
}
}
},
//含义为:选定这行的状态如果是0,则显示的是"已毕业"
{field:'sstatus',title:'状态',width:50,
formatter: function(value,row,index){
if(row.sstatus==0){
return "已毕业";
}else if(row.sstatus==1){
return "学习中";
}
}
},
//关于上文的悬念: 那么为什么值是0,1,页面上显示的却是 文字的“java基础班”,“阿里巴巴公司”呢。----->>往下看页面的写法。
//班级下拉框
function preLoadClass(){
$("#search_sclass").combobox({
width: "150",
height: "25",
//valueField-值是cno(编号), textField-显示的文字是cname(名字)
valueField: "cno",
textField: "cname",
multiple: false, //可多选
editable: true, //不可编辑
method: "post",
url: "ClaServlet?method=getClassList&from=combox",
onChange: function(newValue, oldValue){
//加载班级下的学生
//$('#dataList').datagrid("options").queryParams = {clazzid: newValue};
//$('#dataList').datagrid("reload");
}
});
}
//所属公司下拉框
function preLoadEnt(){
$("#search_senterprise").combobox({
width: "150",
height: "25",
valueField: "eno",
textField: "ename",
multiple: false, //可多选
editable: false, //不可编辑
method: "post",
url: "EntServlet?method=entList&from=combox",
onChange: function(newValue, oldValue){
//加载班级下的学生
//$('#dataList').datagrid("options").queryParams = {clazzid: newValue};
//$('#dataList').datagrid("reload");
}
});
}
////////在add,edit 窗口中, status的写法
<td>
<select id="edit_sstatus" name="edit_sstatus"class="easyui-combobox" style="width: 200px; height: 30px;" >
<option value="0">已毕业 </option>
<option value="1">学习中</option>
</select>
</td>
//编辑窗口中,先显示本来的值。
$("#edit_sstatus").combobox('setValue', selectRow.sstatus);