- 浏览: 210307 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
leeyea:
写的很好!
jqGrid 问题笔记(3) -
hesai_vip:
很不错的说!先mark!
jqGrid 问题笔记(2) -
bawang5021:
总结的确实好
jqGrid 问题笔记(2) -
Hero_dong:
你好,请问怎样设置ckfinder,让它显示左侧的资源文件夹? ...
CKEditor、ckfinder 随笔 -
forestkqq:
duooluu 写道请教一下,能选择时分秒吗?不行啊
jQuery UI Datepicker 应用举例
预览文章: jqGrid 问题笔记
永久链接: http://forestkqq.iteye.com/blog/602944
所谓问题可能不是jqgrid本身问题,而是浏览器或应用的特殊需要而产生的问题。
关于jqgrid,最好的参考是它的官网的wiki 和在线的Demo 。 另外这是 http://forestkqq.iteye.com/ 的原创,本文也会有后续的补充,转载的朋友请标明出处并及时更新。
11. UI Tab中显示jqGrid,只是首个标签中的宽度可以自动扩展
12. 动态切换 jqgrid multiselect 行多选 选项
13. 如何识别和控制自定义按钮
14. 使用 setGridParam 动态重载事件 ( 实现数据选择器 )
15. 设定 jqgrid 数据行高度
16. UI dialog 中使用 jqgrid 时 jqmodal 被遮盖
17. 限制 jqgrid 显示的最大高度( maxheight )
11. UI Tab中显示jqGrid,只是首个标签中的宽度可以自动扩展
解决的办法是在各标签显示的时候才初始化 jqgrid 。下面是 Stack Overflow 中的一段示例:
jQuery(document).ready(function() { var initialized = [false, false]; // 原文格式 jQuery('#tabs').tabs({show: function(event, ui) 没反应 // 改为 .bind 格式 jQuery('#tabs').bind('tabsshow', function(event, ui) { if (ui.index == 0 && !initialized[0]){ // Initialize grid on second tab page here... jQuery(NOMBRE_GRID).jqGrid({ url: '/Idiomas/DatosGrid/', datatype: 'json', mtype: 'GET', height: 'auto', multiselect: true, autowidth: true, colNames: ['Id', 'Nombre'], colModel: [ { name: 'id_idioma', index: 'id_idioma', width: 100, align: 'left', formatter: 'showlink', formatoptions: { baseLinkUrl: '/Idiomas/', showAction: 'Edit', addParam: '' } }, { name: 'nombre', index: 'nombre', width: 100, align: 'left' } ], pager: jQuery(NOMBRE_AREA_PAGINACION), rowNum: tamanoPagina, rowList: [5, 10, 15, 20], sortname: 'nombre', sortorder: “asc”, viewrecords: true, caption: 'Idiomas' }).navGrid(NOMBRE_AREA_PAGINACION, { edit: false, add: false, del: false, refresh: false, search: false }); }); } else if (ui.index == 1 && !initialized[1]){ // Initialize grid on second tab page here... jQuery(NOMBRE_GRID_SELECCIONADOS).jqGrid({ url: '/Idiomas/DatosGrid/', datatype: 'json', mtype: 'GET', height: 'auto', multiselect: true, autowidth: true, colNames: ['Id', 'Nombre'], colModel: [ { name: 'id_idioma', index: 'id_idioma', width: 100, align: 'left', formatter: 'showlink', formatoptions: { baseLinkUrl: '/Idiomas/', showAction: 'Edit', addParam: '' } }, { name: 'nombre', index: 'nombre', width: 100, align: 'left' } ], sortname: 'nombre', sortorder: “asc”, viewrecords: true, caption: 'Idiomas' }); initialized[ ui.index ] = true; });
12. 动态切换 jqgrid multiselect 行多选 选项 :
原先以为通过修改 multiselect 选项可以实现,后来发现行不通。现在的办法是先允许多选,在需要切换的时候,直接隐藏 multiselect 列。如果需要在装入时即不显示 multiselect 列,可以在 loadComplete 事件中根据需要隐藏此列。
// ----------------------------------------------------- // jqgrid 重置 multiselect // ----------------------------------------------------- function jqgrid_reset_multiselect( jqGrid, opt_multiselect ) { // jqGrid.setGridParam( { multiselect: opt_multiselect } ); if ( opt_multiselect ) { jqGrid.jqGrid('showCol', 'cb'); } else { jqGrid.jqGrid('hideCol', 'cb'); } // jqGrid.trigger( 'reloadGrid' ); }
需要说明的是,jqgrid 的 multiselect 需要先初始化为 true,才可以在以后动态切换。
参考:
stackoverflow: jqGrid with multiselect on, how to turn off checkbox checking when row is selected
stackoverflow: jqGrid with multiselect how to check all checkboxes and top one at load?
13. 如何识别和控制自定义按钮 :
下面的代码通过在分页器上添加一个按钮,切换行多选/单选。同时展示了如何识别和动态改变新添加的导航按钮属性。
// 新增一个按钮,设置 id ,以便click事件中识别。
pjqGrid.jqGrid('navButtonAdd',pPageId,{caption:"多行",title:"行单选", buttonicon :'ui-icon-close',id:'multiselect'
, onClickButton:function( )
{
var title = $( '#multiselect',pPageId ).attr( 'title' );
if ( title == '行多选' ) {
// 切换按钮图标
$( 'span.ui-icon-check', '#multiselect',pPageId ).removeClass().addClass( 'ui-icon ui-icon-close' );
$( '#multiselect',pPageId ).attr( 'title', '行单选' );
// 调用“问题12”中的函数
jqgrid_reset_multiselect( pjqGrid, true )
} else {
$( 'span.ui-icon-close', '#multiselect',pPageId ).removeClass().addClass( 'ui-icon ui-icon-check' );
$( '#multiselect',pPageId ).attr( 'title', '行多选' );
jqgrid_reset_multiselect( pjqGrid, false )
}
}
});
关键的是在 navButtonAdd 命令中设定可选的 id 参数。因为这样的按钮是动态添加在 pager 里的,所以可以通过 jQuery 选择器 $( '#multiselect',pPageId ) 找到它。自定义按钮的具体的Html代码可以通过 FireBug查看出来:
<div id="..." ... > ... <td class="ui-pg-button ui-corner-all" id="multiselect" title="行单选" style="cursor: pointer;"> <div class="ui-pg-div"> <span class="ui-icon ui-icon-close"></span>多行 </div> </td> ... </div>
选择器 $( 'span.ui-icon-check', '#multiselect',pPageId ) 表示 pager 中id=multiselect的元素中包含class='ui-icon-check'的 span 标签。由此可以看出,了解按钮的代码结构对于编写jQuery选择器是少不了的。
14. 使用 setGridParam 动态重载事件 ( 实现数据选择器 ) :
使用 jqgrid 是 setGridParam 方法,可以动态的设置 jqgrid 参数,也可以动态重载定义的事件处理函数。
比如,我们可以 jqgrid 作为数据记录选择器,在双击行的时候表示选中了当前记录。具体实现可以将 jqgrid 显示在一个 dialog 中,双击行时记录当前记录,并关闭 dialog 。或者通过触发一个自定义事件,由自定义事件的绑定者接收选中的记录。下面我们介绍下如何动态重载事件:
// -------------------------------------- // jqgrid 加载后的回调函数 // -------------------------------------- function callback_grid_after_loaded( currGrid, ppagerId ) { var jqgridId = currGrid.attr( 'id' ); // jqgrid 的 id currGrid.jqGrid( 'setGridParam', { ondblClickRow: function( id ) { // 重载 ondblClickRow 事件 var rowdata = currGrid.getRowData( id ); // 行数据 // 触发自定义事件 $( '#obj1' ).trigger( "selected_jqgrid_CRUD", { jqgridId:jqgridId, selectedId:id } ); }} ); }
需要注意的是,对于要重载的事件,在初始化 jqgrid 的时候,需要定义事件参数:
var jqOption = { height: "auto", ...., ondblClickRow : function(id){ } // 定义事件 }; var currGrid = jQuery("#jqgrid1").jqGrid( jqOption ); ...... callback_grid_after_loaded( currGrid, '#pagerId' );
15. 设定 jqgrid 数据行高度 :
通过重新定义 jqgrid(3.6.4) 样式可以设定数据行的高度:
.ui-jqgrid tr.jqgrow td { height:30px; /* row 高度 */ }
16. UI dialog 中使用 jqgrid 时 jqmodal 被遮盖 :
在 UI dialog 中使用 jqgrid(3.6.4) , 调用 jqgrid.setColumns( { jqModal:true } ) ,即显示 jqModal 对话框,此时 jqModal 对话框将被 dialog 遮盖(见下图)。
出现这种情况自然是因为 z-index 的问题,通过 firefox 可以看出 dialog 的z-index为 1002, 而 jqmodal 的为 950。我们可以修改 grid.common.js 中设定的值:
// 原来为 950, 但在 UI dialog 中使用 jqmodal setColumns 时,z-index 较小 if(!p.zIndex) {p.zIndex = 1950;}
可以参考:JqGrid in a JqModal causes incorrect edit/delete/alertmod modal position
17. 限制 jqgrid 显示的最大高度( maxheight ) :
通过设定jqgrid 的 height 参数,可以设定jqgrid的高度为一个特定的值或auto。
如果设定为特定的值,当 jqgrid 没有记录或记录不足时,jqgrid 仍保持此高度,页面显得不很好看。如下图:
如果设定高度为 auto,记录不足时,高度会自动变化,但记录比较多时,高度也也很大,会将 jqgrid 下的页面元素都挤到地狱下去了,也很不理想。
所以我们希望将高度设定为 auto,但同时限制一个显示的最大高度。
这可以通过 jqgrid 的 setGridHeight 方法来实现:
function jqgrid_loadComplete( pjqGrid ) { // ---- maxHeight ---- var maxHeight = pjqGrid.getGridParam( 'maxHeight' ); var height = pjqGrid.height(); if ( height>maxHeight ) pjqGrid.setGridHeight( maxHeight ); }
在 jqgrid 的 loadComplete 事件中调用此函数。函数假定你的 jqgrid 参数有一个 maxHeight 参数。下面是一个完整的示例:
var gridUrl = '../services/grid_services.aspx' var jqOption = { height : 'auto', maxHeight : 300, url : gridUrl, rowNum:10, rowList:[0,10,30,50],shrinkToFit:false, autowidth:true, postData: { method : 'InceptDetail_Sample' }, colNames:['客户','送检日期','送检号'] , colModel:[{name:"CustomerName", width:130,align:'left' }, {name:"SponsorDate", width: 60,align:'center' }, {name:"CheckCode", width: 50,align:'center',hidden:true } ], loadComplete: function(){ jqgrid_loadComplete( $('#id_jqGrid') ); }, viewrecords: true, pager: jQuery( '#id_jqPager' ), rownumbers:true, multiselect: true, caption: "" }; var $grid = $('#id_jqGrid'); $grid.jqGrid( jqOption ); // 装载 jqgrid
系列文章列表:
评论
发表评论
-
使用jQuery操控IFrame
2011-11-14 14:50 37511. 调整IFrame滚动条的位 ... -
jQuery升级的几个问题和解决方案
2012-07-10 12:58 1339将 jQuery 从 1.3 升级到 1.4 以后,常会遇到以 ... -
使用JQuery 操控 window.open
2011-05-26 13:31 10484简单应用 window.open的情况,使用 jqu ... -
jqGrid 问题笔记(3)
2011-05-26 13:29 13153所谓问题可能不是jqgrid本身问题,而是浏览器或应用的 ... -
jQuery插件备忘
2010-09-14 09:20 1786使用并推荐的插件: Dropdown Che ... -
开源书籍介绍的软件
2010-09-07 08:35 1234《开源技术选型手册》所介绍的软件 第1章 闲话开源 ... -
swfupload 在 IE 下的销毁问题
2010-07-01 13:32 4225近日使用 SwfUpload做上传程序,在 Firef ... -
UI Dialog 中使用 AJAX 装载内容
2010-06-26 09:58 2199如何在显示 jQuery UI Dialog 中,以 ajax ... -
jQuery选择器示例
2010-06-19 11:24 011 22 22 ... -
jQuery AJAX 中使用 JSON 传递数据
2010-06-02 11:30 0使用 ajax 方式调用页面,一方面需要向被调用的页面传 ... -
jqGrid 应用文章链接
2010-03-11 10:12 0*** jqGrid Wiki 文档 htt ... -
jqGrid 问题笔记(1)
2010-02-25 16:00 12845所谓问题可能不是jqgrid ... -
jQuery UI Datepicker 应用举例
2010-01-05 14:26 10350jQuery UI Datepicker 样例 界面效 ... -
jQuery Dialog 笔记
2009-12-29 15:46 3506头部加入 : <link type=" ... -
Eclipse 插件
2009-12-10 11:37 0Properties Editor 属性文件编辑器 htt ... -
Eclipse、MyEclipse配置
2009-12-10 11:26 0Eclipse、MyEclipse安装配置 安 ... -
jQuery UI Datepicker
2009-11-14 10:42 0UI/API/1.7/Datepicker 中文版: ... -
jQuery plugin: Validation 样例
2009-11-04 14:29 2127链接: http://plugins.jquery.com/p ... -
jQuery plugin: Masked Input
2009-10-29 11:54 1570jQuery plugin: Masked Input ... -
jQuery 资源
2009-10-27 15:51 965jQuery Plugin http://plug ...
相关推荐
这个学习笔记主要围绕“jqGrid学习笔记1”展开,内容来源于jqGrid的英文PDF文档,结合了源码解析和实用工具的介绍。 首先,jqGrid支持多种数据源,包括JSON、XML、HTML、CSV等,这使得它能灵活地与各种后端服务进行...
2. **saveRow**: 当用户完成编辑并希望保存更改时,可以调用 `saveRow` 方法。调用格式为 `saveRow(rowid, successfunc, url, extraparam, aftersavefunc, errorfunc, afterrestorefunc)`。这些参数与 `editRow` ...
2. **CSS 调整**: jqGrid 和 jQuery UI 的字体大小可能不匹配,所以你可能需要在页面中添加自定义 CSS 来调整字体大小,以保持整体视觉一致性。 3. **jqGrid 皮肤**: 自 3.5 版本起,jqGrid 支持完整的 jQuery ...
**jqGrid 使用笔记:开始** jqGrid 是一个强大的 jQuery 插件,用于创建灵活、功能丰富的数据网格。这篇笔记将引导我们逐步了解如何在项目中开始使用 jqGrid。jqGrid 提供了丰富的特性,包括数据分页、排序、过滤、...
博客专用: Jqgrid学习笔记__01__初来乍到 很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的JS是有对应的代码段的。请参考博客 ====> Jqgrid...
博客专用: Jqgrid学习笔记__01__初来乍到 很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的CSS是有对应的代码段的。请参考博客 ====> Jqgrid...
jqGrid 是一个强大的 jQuery 插件,用于创建交互式的表格,提供数据的分页、排序、筛选等功能。在jqGrid的进阶篇中,我们主要会探讨如何在jqGrid中进行更复杂的配置和操作,包括自定义列、本地数据加载、编辑功能...
在本篇Java中jqGrid的学习笔记整理中,我们将聚焦于jqGrid与后台Java服务的数据交互。jqGrid是一款强大的JavaScript库,用于创建动态、交互式的表格,而这里的进阶篇(二)将涉及到如何通过Java后端来提供数据支持。 ...
"Jqgrid之onSelectRow 和onCellSelect 事件不能一起用-yellowcong_yelllowcong的专栏-CSDN博客_files"和"jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)_web开发自学-CSDN博客_files"以及"jqgrid...
2. **验证**:在`afterShowForm`和`afterclickPgButtons`事件中,对编辑日期进行验证,确保只能修改当月之后的计划。 3. **提交前的准备**:在提交数据到服务器之前,需要将`datatype`设置为`json`,以确保请求能够...
本篇学习笔记将详细介绍如何使用jqGrid实现分页和搜索功能。 首先,要使用jqGrid,你需要在HTML页面中引入必要的CSS和JavaScript文件。这些文件包括jqGrid的样式表`ui.jqgrid.css`,jQuery库`jquery-2.0.3.min.js`...
`jqgrid`目录可能包含了jqGrid库的相关JavaScript和CSS文件,比如`jquery.jqGrid.min.js`是jqGrid的核心脚本,`ui.jqgrid.css`则是jqGrid的样式文件,它们是使jqGrid正常工作所必需的。 `img`目录可能存放了jqGrid...
2. **配置参数**:初始化时,你可以传递一系列参数来定制表格的行为,例如数据源(可以是本地数组或远程服务器)、列定义、分页设置等。例如,`data`参数用于指定数据,`colModel`用于定义列的显示和行为。 3. **...
博客专用: Jqgrid学习笔记__01__初来乍到 很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的CSS是有对应的代码段的。请参考博客 ====> Jqgrid...
博客专用: Jqgrid学习笔记__01__初来乍到 很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的JS是有对应的代码段的。请参考博客 ====> Jqgrid...
博客专用: Jqgrid学习笔记__01__初来乍到 很多时候在网上下载一段代码,结果引用的CSS和JS文件不知道从哪里弄,结果上网下载,不是版本不对,就是完全不对。这里的JS是有对应的代码段的。请参考博客 ====> Jqgrid...