jquery-easyui学习(5)_datagrid

1.简单数据展现
$(function(){
    $('#t_user').datagrid({
        idField:'id' ,//只要创建数据表格 就必须要加 ifField
        title:'用户列表' ,
        width:1300 ,
        height:450, 
        url:'UserServlet?method=getList' ,
        fitColumns:true ,  
        rownumbers:true ,
        striped: true ,//隔行变色特性 
      //nowrap: false ,//折行显示 为true 显示在一行
        loadMsg: '数据正在加载,请耐心的等待...' ,
      //singleSelect:true ,<span style="white-space:pre">				</span>//单选模式 
     //remoteSort: false ,
     //sortName: 'salary' ,
     //sortOrder: 'desc' ,
       rowStyler: function(index ,record){
      if(record.age > 25){
         return "background:red";
       }
        // console.info(index);
        // console.info(record);
      } ,
       frozenColumns:[[			//冻结列特性 ,不要与fitColumns 特性一起使用 
        {
            field:'ck' ,
            width:50 ,
            checkbox: true
        ]],
      columns:[[
          {
           field:'username' ,
           title:'用户名' ,
           width:100 
          },
         {
           field:'password' ,
           title:'密码' ,
           width:100 
         },{
           field:'age' ,
           title:'年龄' ,
           width:100 
         },{
           field:'sex' , 
           title:'性别' ,
           width:50 
         },{
           field:'birthday' ,
           title:'生日' ,
           width:100 
         },{
           field:'startTime' , 
           title:'开始时间' , 
           width:150
         },{
           field:'endTime' , 
           title:'结束时间' ,  
           width:150
         },{
           field:'city' ,
           title:'所属城市' ,
           width:100 
         },{
           field:'salary' ,
           title:'薪水' ,
           width:100
         },{
           field:'description' ,
           title:'个人描述' ,
           width:150 
          }
         ]] 
       });
});

*   idField:'id'    只要创建数据表格 就必须要加 ifField  以后增删改查都要用到主键

*   冻结列特性 ,不要与fitColumns 特性一起使用  无效

*   冻结列属性和列属性都是二维数组 跨行跨列操作

*   nowrap: false   计算机解析识别英文单词 和 汉子   英文字母  数字 认为你是一个整体

*   remoteSort: false  默认是true  从数据库取回来是怎么排序就怎么排序

*   sortName: 'salary' , sortOrder: 'desc' ,  只有remoteSort为false 这两个才能用  

*   asc 升序  desc 倒序 

*   数据表格后面空出一点是做滑轮用的

*   rowStyler: function(index ,record)   index 索引  是从0开始的   record 是一行的记录  是一个json对象

*   console.info(index); 输出到控制台  firebug  控制台 全部 可以看到

*    width  属性   都是数字  没有 px

2.分页实现

           pagination:true,
           pageSize: 10 ,
           pageList:[5,10,15,20,50]
*   pageSize只能是pageList里面的值

*   每次选择当前页  每页显示多少记录  都会把参数传递给服务器 并发送请求

String json = "{\"total\":"+total+" , \"rows\":"+JSONArray.fromObject(ulist).toString()+"}";
*     后面这个是字符串的连接   JSONArray 把集合转成json对象  JSONObject  把对象转成json对象
3.columns特性

{
									field:'username' ,
									title:'用户名' ,
									width:100,
									align:'center' ,
									styler:function(value , record){
										if(value == 'aaa'){
											return 'background:blue;';
										}
									} 
								},
*   styler  有3个参数  用两个参数也可以  代表前两个参数
{
									field:'age' ,
									title:'年龄' ,
									width:100 ,
									sortable : true
								}
* sortable:true   可以点击title  进行排序

*  json格式 最后一个 不要逗号  好像要逗号也可以  中间的必须要有逗号 

formatter:function(value , record , index){
											if(value == 1){
												return '<span style=color:red; >男</span>' ;
											} else if( value == 2){
												return '<span style=color:green; >女</span>' ; 
											}
											//console.info(value);
											//console.info(record);
											//console.info(index); 
									},
*   formatter  对value进行格式化

*   span 没有固定的格式表现。当对它应用样式时,它才会产生视觉上的变化

{
									field:'ck' ,
									width:50 ,
									checkbox: true,
								}
*  checkbox  true就显示checkbox  多选框  默认也是支持多选的  singleSelect  改为true 就只能单选

{
									field:'city' ,
									title:'所属城市' ,
									width:100,
									formatter:function(value , record , index){
										if(value==1){
											return '北京';
										} else if(value == 2){
											return '上海';
										} else if(value == 3){
											return '深圳';
										} else if(value == 4){
											return '长春';
										}
										/*
										var str = '';
										$.ajax({
											type:'post' , 
											url : 'UserServlet?method=getCityName' ,
											cache:false ,
											async: false ,		//同步请求
											data:{id:value},
											dataType:'json' ,
											success:function(result){
												str = result.name ;
											}
										});
										return str ;
										*/
									} 
								}
*  当内容不会变时而且不多 就选择第一种  当内容会变时  就选择第二种
*   第二种 必须选择同步请求  异步的时候  datagraid已经把数据准备好了  数据已经显示好了

*   返回的是一个json对象   所以result可以直接用  对象. 的方式

*   data可以是一个json对象 也可以是表单序列化过去

{
									field:'description' ,
									title:'个人描述' ,
									width:150,
									formatter:function(value , record , index){
										return '<span title='+value+'>'+value+'</span>';
									} 
								}
*   span标签加上个title属性   光标移上去 会有显示

4.增删改查

String str = "{'status':'ok' , 'message':'操作成功!'}";
*  这种方式  返回的字符串 在jsp转成json对象才能用  直接返回json不能用  转义字符+双引号  才可以直接用
*  这种方式   返回  ajax方法 error回调方法会调用

$('#t_user').datagrid('reload');
*  reload 在当前页新增  不会跳到首页   load  会跳到首页
{
       text:'新增用户' ,
       iconCls:'icon-add' , 
       handler:function(){
          $('#mydialog').dialog({
          title:'新增用户' 
         });
       //$('#myform').find('input[name!=sex]').val("");
         $('#myform').get(0).reset();
       //$('#myform').form('clear');
         $('#mydialog').dialog('open');
 

*   三种都可以对表单进行置

*   第二种把jquery对象转换成dom对象 用dom方法进行置空

*   第三种 遇到单选框时 会把默认的给去掉

*   由于新增和修改都要用的是同一个dialog  当修改完后  title变成修改用户 再点击新增title还是修改用户  所以新增时还要改一下title   只要没刷新 jquery的效果还是在那里的

var flag ;		//undefined 判断新增和修改方法 
*   第一次定义是undefined
<input id="age" type="text"  name="age" value="" />
*   input标签  没填默认也是""   

$('#myform').form('load',{	   //调用load方法把所选中的数据load到表单中,非常方便
		id:arr[0].id ,
		username:arr[0].username ,
		password:arr[0].password ,
		sex:arr[0].sex ,
		age:arr[0].age ,
		birthday:arr[0].birthday ,
		city:arr[0].city ,
		salary:arr[0].salary ,
		startTime:arr[0].startTime,
		endTime:arr[0].endTime ,
		description:arr[0].description
		});
*    这是form表单的load方法,不是 调用datagrid的load方法,把所选中的数据load到表单中,非常方便读取记录填充到表单中。

*    数据参数可以是一个字符串或一个对象类型,如果是字符串则作为远程URL,否则作为本地记录。

*    id一定要填

{
	text:'删除用户' ,
	iconCls:'icon-remove' , 
	handler:function(){
	var arr =$('#t_user').datagrid('getSelections');
	if(arr.length <=0){
	       $.messager.show({
			title:'提示信息!',
		        msg:'至少选择一行记录进行删除!'
			});
	} else {
	      $.messager.confirm('提示信息' , '确认删除?' , function(r){
	if(r){
		var ids = '';
		for(var i =0 ;i<arr.length;i++){
			ids += arr[i].id + ',' ;
		}
		ids = ids.substring(0 , ids.length-1);
	 $.post('UserServlet?method=delete' , {ids:ids} , function(result){
       //1 刷新数据表格 
       $('#t_user').datagrid('reload');
       //2 清空idField   
       //$('#t_user').datagrid('unselectAll');
       //3 给提示信息 
       $.messager.show({
		title:'提示信息!' , 
		msg:'操作成功!'
		      });
	});
	 } else {
	      return ;
		}
	             });
		}
			}								
	}
*   jquery的post方法  jQuery.post(url, [data], [callback], [type])

*   删完后 要调用datagrid的unseletAll方法 不然 选项会残留   删完一次后 不点选项删除  也可以删除  不会报错   直接在数据库删除已经删了的也不会报错

*   否定  直接return  什么事都不干

$('#searchbtn').click(function(){
	  $('#t_user').datagrid('load' ,serializeForm($('#mysearch')));
	});
*   不能$('#myform').serialize()  直接序列化   序列化变成字符串用and连接  这里要用对象
String username = request.getParameter("username") == null?"":request.getParameter("username");
<input name="username" class="easyui-validatebox"  value="" />
*   第一次 查询全部的时候是username是null   经过username查询过来  加不加 value=""  都是""
$('#clearbtn').click(function(){
		$('#mysearch').form('clear');
		$('#t_user').datagrid('load' ,{});
			});
*   让数据表格还原  参数传过去的是{}
*    让表单还原   $('#mysearch').form('clear');
String order     = request.getParameter("order")== null?"":request.getParameter("order");		//排序的方式
String sort     = request.getParameter("sort")== null?"":request.getParameter("sort");			//排序的字段 
*   后台取到这两个参数  拼到sql上 排序才有效

*    datagrid的load方法  加载和显示第一页的所有行。如果指定了'param',它将取代'queryParams'属性。通常可以通过传递一些参数执行一次查询,通过调用这个方法从服务器加载新数据。 所以 排序失效




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值