jqgrid动态改变列以及隐藏列之后保持表格长度不变
2013-04-10 22:21
741 查看
首先说下动态改变列。由于jqgrid中的colNames和colModel都是不可改变的,所以有个取巧一点的方法,就是把需要的所有列都列出来,把需要隐藏的列使用hideCol方法隐藏,需要显示的列使用ShowCol方法显示。代码如下:
$("#gridTable").jqGrid({
url:"clxxtj",
datatype:"json",
height:"auto",
autowidth:true,
forceFit:true,
shrinkToFit:true,
colNames:['选择','车辆编号','号牌号码','工号','姓名','车辆类型','车辆所有人','品牌型号'],
colModel:[
{name:"xz",width:50,align:"center",sortable:false},
{name:"clbh",hidden:true,align:"center",sortable:false},
{name:'hphm',width:120,align:"center",sortable:false},
{name:"gh",width:120,align:"center",sortable:false},
{name:"xm",align:"center",sortable:false},
{name:"cllx",align:"center",sortable:false},
{name:"syr",align:"center",sortable:false},
{name:"ppxh",align:"center",sortable:false}
],
rowNum:10,
gridComplete: function(){
var ids = $("#gridTable").jqGrid('getDataIDs'); //获取jqgrid的所有行的id(是一个数组)
for(var i = 0;i < ids.length; i+=1){
var cl = ids[i]; //给借用说明单元格 注册事件
be = "<input type='radio' name='xz' class='dxradio' value='"+cl+"'/>";
$("#gridTable").jqGrid('setRowData', cl, {xz:be}); //给第一列赋值
}
},
pager:"#gridPager",
viewrecords:true,
caption:"车辆信息统计"
});
本来是有工号列的,如图:
后来由于某些原因需要动态改变列的内容,假设需要去掉工号列好了,那么可以用hideCol方法实现,代码:
$("#gridTable").setGridParam().hideCol("gh").trigger("reloadGrid");
可是问题来了,工号列被隐藏后表也相对变短了,如图:
大家可以看到代码,autoWidth、forceFit、shrinkToFit都已经设置为true了,表格还是变短。我特地翻了下API,没看到还有什么可以使表格长度保持不变的属性或方法,于是只好自己手工设置使得表格不变。其实原理也简单,就是记录下表格原始长度,然后再隐藏后设置长度为原始长度。代码如下:
var len=$("#gridTable").getGridParam("width");
$("#gridTable").setGridParam().hideCol("gh");
$("#gridTable").setGridWidth(len);
这样就行了,效果如下:
$("#gridTable").jqGrid({
url:"clxxtj",
datatype:"json",
height:"auto",
autowidth:true,
forceFit:true,
shrinkToFit:true,
colNames:['选择','车辆编号','号牌号码','工号','姓名','车辆类型','车辆所有人','品牌型号'],
colModel:[
{name:"xz",width:50,align:"center",sortable:false},
{name:"clbh",hidden:true,align:"center",sortable:false},
{name:'hphm',width:120,align:"center",sortable:false},
{name:"gh",width:120,align:"center",sortable:false},
{name:"xm",align:"center",sortable:false},
{name:"cllx",align:"center",sortable:false},
{name:"syr",align:"center",sortable:false},
{name:"ppxh",align:"center",sortable:false}
],
rowNum:10,
gridComplete: function(){
var ids = $("#gridTable").jqGrid('getDataIDs'); //获取jqgrid的所有行的id(是一个数组)
for(var i = 0;i < ids.length; i+=1){
var cl = ids[i]; //给借用说明单元格 注册事件
be = "<input type='radio' name='xz' class='dxradio' value='"+cl+"'/>";
$("#gridTable").jqGrid('setRowData', cl, {xz:be}); //给第一列赋值
}
},
pager:"#gridPager",
viewrecords:true,
caption:"车辆信息统计"
});
本来是有工号列的,如图:
后来由于某些原因需要动态改变列的内容,假设需要去掉工号列好了,那么可以用hideCol方法实现,代码:
$("#gridTable").setGridParam().hideCol("gh").trigger("reloadGrid");
可是问题来了,工号列被隐藏后表也相对变短了,如图:
大家可以看到代码,autoWidth、forceFit、shrinkToFit都已经设置为true了,表格还是变短。我特地翻了下API,没看到还有什么可以使表格长度保持不变的属性或方法,于是只好自己手工设置使得表格不变。其实原理也简单,就是记录下表格原始长度,然后再隐藏后设置长度为原始长度。代码如下:
var len=$("#gridTable").getGridParam("width");
$("#gridTable").setGridParam().hideCol("gh");
$("#gridTable").setGridWidth(len);
这样就行了,效果如下:
相关文章推荐
- jquery.dataTables表格列 动态显示隐藏(加工) checkbox刷新保持不变
- 动态设置全屏、取消全屏的方法,以及切换全屏保持内容位置不变的方法
- jqgrid动态显示隐藏列,同时自动调整表格宽度
- 计算(字符串)的长度-以及高度动态改变size
- Jqgrid之动态隐藏和显示列以及修改表头-yellowcong
- Android动态改变高度以及计算长度的EditText
- jqGrid动态隐藏列显示列以及设置显示相对宽度
- Android 动态改变高度以及计算长度的EditText
- jquery 动态改变jqgrid列名
- [置顶] 用js 删除一组数组中第五大的数,删除之后的数组次序保持不变,若第五大数重复删除任意一个即可。
- Jq 下拉框chosen之后,动态改变dropdown的数据
- Ajax简单示例之改变下拉框动态生成表格
- jqGrid取值问题表格动态的加行,删除行,保存
- 可拖动拉伸的左右分栏效果,本例子是用Table以及JS来实现的,左右分栏可改变,拖动中间的边框就可实现宽度的调整,点击时可设置为隐藏左侧列表。
- 动态改变颜色之后,恢复原来的背景色
- 鼠标拖动动态改变表格的宽度的js脚本 兼容ie/firefox
- iOS开发笔记- cell里放textView根据输入的文字动态改变textView以及cell高度
- 当视野改变时,使主题图保持不变
- Java中动态地改变数组长度及数组转Map的代码实例分享
- ionic中文本固定长度的设置以及显示和隐藏