`

jqgrid 动态改变列头

 
阅读更多

 总结下jqgrid动态改变列头

前端: jqgrid 版本:4.4.4,jquery版本:1.9.1

后端:spring3.2 MVC

我在这里未列出所有代码,需求是在页面左侧有棵树,右侧是grid。点击树节点,根据不同条件右侧显示不同的列头,我在这里抛砖引玉,只列出基本的代码。

前端:

1.html部分

   <table id="grid"></table>
   <div id="nav_pager"></div>

2.JS部分

在此,我未提供树的代码,只给出一个点击树节点后触发的方法refreshRoleAccountGrid,传入点击节点的ID.

 <script>
	 var postData = {};
	 var jqdefaultGridConfig = {
	 	mtype : 'POST',//ajax提交方式
	 	height : 360,
		width:550,
	 	rowNum : 20,//设置表格中显示的记录数,参数会被自动传到后台。
	 	rowList : [ 10, 20, 50 ],
	 	pager : '#nav_pager',
	 	viewrecords : true,//是否要显示总记录数
	 	multiselect : true,//定义是否可以多选
	 	postData : postData,//参数
	 	jsonReader : {
	 		root:"rows",  
	 		repeatitems : false,
	 		page: "page",  
	 		total: "total",  
	 		records: "records" 
	 	},
	 	caption : '用户列表'//标题
	 };
	 //刷新grid方法
	 function refreshRoleAccountGrid(rid){
	    var url = "sys/role/findmodel"; 
	    var myData = {rid:rid};
	    $.ajax({
  			type: 'POST',
  			data:myData,
  			url: url,//请求的action路径
  			error: function () {//请求失败处理函数
  				alert('请求失败');
  			},
  			success:function(data){ //请求成功后处理函数。
				var data= eval('('+data+')');
				//在此根据不同条件,colModal显示不同
				if (data){
					jqdefaultGridConfig.colModel=[{name:'id', index:'id', width:55},
  				                            {name:'accountid', index:'accountid', width:55},
  				                          {name:'accountname', index:'roleid', width:55}];
				        jqdefaultGridConfig.url="sys/account/data";  
				}else{
                                	jqdefaultGridConfig.colModel=[{name:'id', index:'id', width:55},
  				                            {name:'departmentid', index:'accountid', width:55},
  				                          {name:'departmentname', index:'roleid', width:55}];
				        jqdefaultGridConfig.url="sys/department/data"; 
                                }
  			        $('#grid').GridUnload();
  				jqdefaultGridConfig.postData=myData;  
  				jqdefaultGridConfig.datatype='json';
  	                        $('#grid').jqGrid(jqdefaultGridConfig).trigger("reloadGrid"); 
    			}
  		});
	}
      //样式处理
      $("#gbox_grid").removeClass("ui-corner-all").removeClass("ui-widget-content");
      $("#nav_pager").removeClass("ui-corner-bottom");
	</script>

3.后端:

@RequestMapping(value="/sys/role/findmodel")
@ResponseBody
public String getColModel(HttpServletRequest request,   
            HttpServletResponse response) throws Exception{
		String out = "";
		String rid = request.getParameter("rid");
		//在这里写下业务逻辑,以json格式返回前端显示colModal的判断条件
		//<-----业务逻辑开始
		//业务逻辑结束-------->
		return out;
}

  

 分页信息:

import java.io.Serializable;
import java.util.List;
/***
 * 分页信息封装
 *
 */
public class PageInfo implements Serializable {

    private static final long serialVersionUID = 587754556498974978L;
    //总页数
    private int totalPage;
    //总记录数
    private int totalResult;
    //表示从当前记录开始查询,显示到的ID, 在mysql limit 中就是第一个参数.
    private int currentResult;
    private String sortField;
    private String order;
    private List<?> resultsList;//返回的数据
    private int rows;//每页显示数量
    private int page;//当前页码
    
    
	public int getRows() {
		return rows;
	}
	public void setRows(int rows) {
		this.rows = rows;
	}
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		if (page <=1){
			page = 1;
		}
		this.page = page;
	}
	public List<?> getResultsList() {
		return resultsList;
	}
	public void setResultsList(List<?> resultsList) {
		this.resultsList = resultsList;
	}
	public int getTotalPage() {
		if (totalResult % rows == 0) {
			this.totalPage = totalResult / rows;
		} else {
			this.totalPage = (totalResult / rows) + 1;
		}
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public int getTotalResult() {
		return totalResult;
	}
	public void setTotalResult(int totalResult) {
		this.totalResult = totalResult;
	}

	public int getCurrentResult() {
		currentResult = (page-1) * rows;
		return currentResult;
	}
	public void setCurrentResult(int currentResult) {
		this.currentResult = currentResult;
	}
	public String getSortField() {
		return sortField;
	}
	public void setSortField(String sortField) {
		this.sortField = sortField;
	}
	public String getOrder() {
		return order;
	}
	public void setOrder(String order) {
		this.order = order;
	}
	
	
    
}

 

返回前端给jqgrid的json数据输出:

	public String outputJSONDataByList(PageInfo pageview) {
		JSONObject obj = new JSONObject();
		obj.put("page", pageview.getPage()); // 当前页
		obj.put("total", pageview.getTotalPage()); // 总页数
		obj.put("records", pageview.getTotalResult()); // 总记录数
		obj.put("rows", pageview.getResultsList());    //具体的Table显示内容	    
		return obj.toString();
	}

 

 

分享到:
评论
1 楼 superscorpio 2013-05-16  
如果要支持多列排序呢?

相关推荐

    jqgrid行编辑+动态为其他列赋值

    4. 如果需要动态改变列的显示,可以利用`formatCell`或`beforeEditCell`事件,在单元格被编辑之前调整其内容或行为。 5. 对于后台处理,文件"后台获取列的json对象.txt"可能包含了服务器返回的列定义或数据,这可能...

    jgrid实现列的动态

    本文将深入探讨如何在jGrid中实现列的动态显示和配置,这是在处理复杂数据展示时非常有用的功能。 ### jGrid中的动态列显示 动态列显示意味着根据特定条件或用户选择来调整表格中显示的列。这不仅提高了用户体验,...

    数据表格JqGrid自适应列宽度

    4. **调整列宽的函数**:JqGrid提供了一些内置函数,如`setGridWidth`和`autoResizeAllColumns`,用于动态调整整个表格或单个列的宽度。开发者可以通过监听窗口的`resize`事件,调用这些函数来实现自适应。 5. **...

    实现jqGrid三级表头功能,支持冻结,拖动

    如果希望用户可以通过拖动改变列的顺序,还可以使用`draggable`和`resizable`选项。同时,需要监听`beforeSortCol`和`onSortCol`事件,以便在拖动过程中和拖动结束后执行相应的处理逻辑。 现在,我们来看看核心的...

    jQuery插件jqGrid动态获取列和列字段的方法

    通常,你可以通过调用`jqGrid`对象的方法,如`setColProp`或`hideCol`/`showCol`来动态改变列的属性或显示状态。 总结起来,jqGrid插件提供了强大的动态获取和管理列的能力,开发者可以根据实际需求灵活运用,构建...

    jqgrid 修改一列 ,

    通过理解jqGrid的API和Vue.js的数据绑定,你可以灵活地修改表格的列属性,以及动态更新所有行的数据。在实际项目中,这样的组合可以大大提高开发效率和用户体验。记得在实践中不断学习和交流,以提升自己的技能。

    jqgrid 解决冻结栏高度不一致的问题,修改了源代码

    jqgrid 采用冻结栏之后往往会出现冻结的栏的高度和非冻结栏高度的不一致,滚动滚动条的时候出现冻结栏的div小好几个px 的问题

    Jquery 实现列的拖动 jquery grid

    现在,用户可以自由地拖动表头来改变列的位置。但要注意,拖动列后,后台数据也需要对应调整,以保持数据和列显示的一致性。 对于内容的自由展示,jQuery Grid支持多种自定义格式化和编辑器,可以通过`formatter`和...

    JqGrid插件+JqGridDemo+JqGrid主题

    2. 动态加载:JqGrid具备分页功能,能够根据用户的滚动或点击事件动态加载数据,减轻服务器负担并提升用户体验。 3. 排序与筛选:用户可以通过点击表头进行列排序,同时JqGrid还提供了高级的筛选功能,如条件筛选、...

    jqGrid 4.6和4.7版本

    11. **API接口**:jqGrid提供了丰富的API,如`setGridParam`用于动态改变表格配置,`reloadGrid`用于重新加载数据,`getRowData`获取选定行的数据等,方便开发者进行程序控制。 12. **数据导出**:jqGrid支持将表格...

    jqgrid序列

    - 自定义列头:利用`formatter`函数实现列头的个性化展示和交互。 - 拓展功能:通过插件或自定义代码实现如导出数据、打印表格等额外功能。 总结来说,jqGrid是一个强大且灵活的前端数据管理工具,适用于需要展示...

    jqGrid4.6完整包

    2. **可编辑表格**:jqGrid 支持表格数据的编辑功能,用户可以直接在表格内修改单元格数据,提供单行编辑、多行编辑和弹出式编辑等多种模式,满足不同场景的需求。 3. **文件结构**: - `src`:源码目录,通常包含...

    jQgrid demo

    1. **数据加载与显示**:jQGrid 支持从服务器或本地数据源动态加载数据,并以表格形式展示。它可以处理 JSON、XML、CSV 等多种数据格式,适应不同后端接口的需求。 2. **分页**:jQGrid 提供了内置的分页功能,用户...

    html+jqgrid,

    开发者可以通过修改这些样式来改变表格的外观。 综合以上内容,我们可以得出结论,这个项目是一个简单的前端数据网格展示示例,利用HTML和jQGrid实现了无需后端服务器和数据库的数据展示。开发者可以借鉴这个例子...

    jqgridDemo

    9. 扩展功能:jqGrid还提供了如行选择、行拖放、列拖放、树形数据展示等扩展功能。 在"jqgridDemo"压缩包中,可能包含的文件有HTML文件,用于展示jqGrid实例;JavaScript文件,包含了jqGrid的配置代码;CSS文件,...

    jqGrid的自适应表格

    为了实现自适应窗口大小,你可以监听窗口的`resize`事件,然后调用jqGrid的`setGridWidth`方法来动态调整表格宽度: ```javascript $(window).on('resize.jqGrid', function () { var newWidth = $(this).width();...

    jquery.jqgrid最新版

    jqGrid提供了多种内置皮肤,如"ui.jqgrid.css"中的"ui-lightness"和"ui-darkness",可以通过修改CSS来改变表格样式。同时,也可以自定义CSS,调整表格、按钮、分页等元素的外观。 五、jqGrid插件 jqGrid的`plugins...

    jqGrid 3.5源码+DEMO+DOC

    - 编辑与操作:jqGrid支持行内编辑,用户可以直接在表格中修改数据,还提供了添加、删除、保存和取消编辑的操作。 - 自定义列:开发者可以自定义列的显示样式、宽度和对齐方式,甚至可以添加自定义的列模板。 - ...

    jquery.jqGrid-4.3.2.zip

    2. **排序**:jqGrid支持列头点击进行数据排序,可以根据不同列的值升序或降序排列,方便用户快速查找所需信息。 3. **筛选**:提供多种筛选方式,如输入框、下拉菜单等,用户可根据需要快速过滤数据。 4. **编辑*...

Global site tag (gtag.js) - Google Analytics