easyui combobox获取后台数据库数据的方式介绍

     今天中午利用午休时间,学习了一下easyui combobox控件的的使用,可以参见下面的连接查看与combobox 相关的资料

    easyui combobox详细介绍 

(一)、功能需求(如下图所示):获取行政区划显示在下拉列表中

        easyui combobox获取后台数据库数据的方式介绍_第1张图片

(二)、前台实现conbomox.jsp

      2.1、引入easyui相关文件到项目,在这里不多做介绍了,童鞋们可以自己度一下

      2.2、简单设置combobox的外形,combobox控件的id="admiDivisionCode"
               代码如下:


     
2.3、初始化combobox:将从数据库获取的行政区划加载到combobox控件的下拉列表中

         下面介绍四种方法加载数据库数据到combobox

          2.3.1、方法1: 调用$.get()获取数据

  $(document).ready(function(){
  queryXzqh();
  })
  function queryXzqh(){
 $.get("${base}/combobox/queryXzqh.action",function(data){//后台请求

   var options=$("#admiDivisionCode").combobox('options');
   options.textField="NAME";
   options.valueField="CODE";
  //加载数据
   $("#admiDivisionCode").combobox("loadData",data.data);
 ,"json");
  }
  

2.3.2、方法2: 调用$.getJSON() 获取数据


 
  
 
  2.3.3、方法3: 调用 
  $.ajax({}) 
  获取数据 
  



 
  
 
  (三)、后台实现 
  

     3.1、ComboboxController.java

 

@Controller
@RequestMapping(value="combobox")
public class ComboboxController {
	@Autowired
	private ComboboxServiceImpl comboboxServiceImpl;
	
	// @描述:获取行政区划(适用于前台三种方法的调用)
	@RequestMapping(value = "queryXzqh")
	@ResponseBody
	public ResultVO>> queryXzqh(){
		ResultVO>> resultVO = new ResultVO>>();
		try{
			List> list =comboboxServiceImpl.queryXzqh();
			resultVO.setData(list);
			resultVO.setResult(ResultConstant.RESULT_SUCCESS);
			resultVO.setMessage(ResultConstant.MESSAGE_SUCCESS);
		}catch(Exception e){
			e.printStackTrace();
			resultVO.setResult(ResultConstant.RESULT_FAIL);
			resultVO.setMessage(ResultConstant.MESSAGE_FAIL);
		}
		return resultVO;
	}
	
	
	//描述:获取行政区划(适用于方法四的前台调用)
	/*
	@RequestMapping(value="/queryXzqh.action")
	@ResponseBody
	public JSONArray queryXzqh(){
	net.sf.json.JSONArray jsonArray=new JSONArray() ;
	List> list= new ArrayList>();
	try{ 
          //获取数据库的数据
	   list=comboboxServiceImpl.queryXzqh();
        //将获取的list转化为json格式
	   jsonArray = net.sf.json.JSONArray.fromObject(list);
		}catch(Exception e){
	   e.printStackTrace();
		}
	return jsonArray;
  }*/
}

 
  3.2、service层ComboboxServiceImpl.java 
  

@Service
public class ComboboxServiceImpl {
	
	@Autowired
	private ComboboxDaoImpl comboboxDaoImpl;
	
	public List> queryXzqh(){
               //调用底层dao数据
		return    comboboxDaoImpl.queryXzqh();
	}
	
}

3.4、dao层 ComboboxdaoImpl.java

@Repository
public class ComboboxDaoImpl  extends BaseHibernateDao {
	
	public List> queryXzqh(){
		
		String sql = "select d.code,d.name from cendic.d_dictionary_item d left join cendic.d_dictionary_item d1 on d.parent_id=d1.id "
				+ "where (d1.code='510100' and d1.id=d.parent_id) or d.code='510100' order by d.code";
		
		//创建查询对象
		Query  query=this.createSQLQuery(sql, null, null, null);
		//获取List
		List> list=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
		if(list.size()>0){
			return list;
		}else{
			return  null;
		}
    }
}
(四)、总结

   1、combobox加载远程数据的用第四种方式接收数据的时候遇到的一个问题是:前台能够获取到后台传来的数据,但是当combobox就是加载不出来数据,当时郁闷死了,怎么都找不出问题,然后就想会不会是返回的数据格式问题

combobox必须加载json格式才能显示,那我把返回的list数据转化为json格式之后在传到前台,然后居然就真的加载出来了,但是

还是很很多疑问,比如为什么返回list类型数据用$.get()、$.ajax()、$.getJSON()都没有转化为json格式也可以加载成功,到底是为什么呢??????

返回的list数据格式在Debug下如下图:这不是json格式的数据

easyui combobox获取后台数据库数据的方式介绍_第2张图片

疑问还有待解决?????????





你可能感兴趣的:(easyui学习)