之前写到:玩转jquery插件之flexigrid(一)如何获取并使用flexigrid?挺受欢迎,后来倒是一直有在从事flexigrid的应用,但的确有些忙,一些整理和保密(一些应用中涉及机密的内容要去掉)工作也感觉会挺繁琐,只好慢慢来吧。
谈到改造,先说一下我们一般都会有哪些比较典型的应用吧,比如在数据上的点击增加点事件,比如加一个筛选记录的操作入口,比如编辑某条记录等等,这些至少是我工作中实实在在的需求。那么在这里,限于篇幅和个人精力,我们做三个方面的改造。
a).增加按钮事件
b).显示某个时间区间内的数据,且可以选择时间区间
c).根据输入的条件筛选数据
对于需求a,我们对按钮事件的期望当然是去完成某项操作,在这里讨论的是和服务端有交互的事件,在flexigrid的一些高级例子中,给出了“增加”和“删除”按钮,但未给出交互示例,其实作者意图也是告诉我们该增加怎样的按钮,按钮放在哪里,按钮该干什么事情等等,都是可以让我们自定义的。如对于“增加”和“删除”按钮事件,我们可以这里来处理:
首先在flexigrid的定义中增加这样的设置,
- buttons : [
- {name: '添加版本', bclass: 'add', onpress : versionMan},
- {name: '删除版本', bclass: 'delete', onpress : versionMan},
- {separator: true}
- ],
表示要给flexigrid增加两个按钮,名为“增加”和“删除”,分别用“add”和“delete”的class来修饰,且都调用了一个名为versionMan的函数,并且按钮直接启用了分隔符。
至于versionMan函数,完全可以自定义要做的事情。如在示例中我这样进行了定义(主要是看看结构,可以根据自己的需求进行更改):
- function versionMan(com,grid){
- if(com == "添加版本"){
- type = "insert";
- //mask(); 给弹出的div加入遮罩效果
- //_initVal();初始化弹出div的函数调用,这里均可自定义
- $("#edit_versionDiv").css("top",(document.documentElement.scrollTop+260)+"px").show();
- }
- else if(com == "删除版本"){
- if($('.trSelected',grid).length==0){
- alert("请先选中要删除的版本");return false;
- }
- if(confirm('删除 ' + $('.trSelected',grid).length + ' 版本?')){
- var versionArr=$(".trSelected td:eq(2) div:first-child",grid);
- var versionStr = new Array();
- for(var i=0; i<versionArr.length;i++){
- versionStr.push($(versionArr[i]).text());
- }
- $.ajax({
- type: "POST",
- url: "del_version.php",
- data: "ids="+versionStr.join(","),
- success: function(msg){
- if(msg=="success"){
- $("#version_man").flexReload({});
- }
- else alert("有错误发生");
- },
- error: function(msg){
- alert(msg);
- }
- });
- }
- }
- };
上面的示例中需要注意的是:使用ajax方法调用一个php脚本并传入参数,从而执行了需要的操作,php脚本的写法并没有什么不同,就像普通的处理即可,然后$(”#version_man”).flexReload({});这里表示重新调用了flexigrid控件。
除了上面这种通过定义的接口增加按钮和事件的方式,我们还可以采用完全自定义的方式来达到同样的效果,如可以这样来进行:
- function set_exeBtn(id){
- if($("#"+id).parent().siblings(".pDiv").children(".pDiv2").children("div:last").contents("input").length == 0){
- var str = '<div class="btnseparator"></div><div class="pGroup" style="float:right"><input type="button" onclick="updateS
- tate(/''+id+'/')" class="button" value="执行" /></div>';
- $("#"+id).parent().siblings(".pDiv").children(".pDiv2").append(str);
- }
- };
然后在flexigrid初始化参数中设置:onSuccess:function(){set_exeBtn(”gridtable”);},这表示flexigrid加载完成后执行set_exeBtn函数,该函数向flexigrid的右下角加入了一个名为“执行”的按钮,并且为该按钮定义了事件updateState,该事件的定义如下:
- function updateState(id){
- //最后
- $("#"+id+" tr td:last-child div:first-child").each(function(){
- var op = $(this).text();
- if(op == "无操作")return;
- else{
- var ids = $(this).parents("tr:first").children("td:first").children("div:first").text();//假定第一行的值为记录的id
- var newStateVal = $("span:first",this).attr('lang');
- $.ajax({
- url:"update_msgState.php",
- type:"POST",
- dataType:"text/html",
- data:"ids="+ids+"&ps="+newStateVal,
- success:function(data){
- if(data == "success"){
- //reloadGrids(id); 自定义执行成功后的函数调用,可以重新调用flexigrid或者做其他操作
- }
- else{
- alert("执行过程遇到错误");
- }
- },
- error:function(msg){
- alert(msg);
- }
- });
- }
- });
- };
该事件的简要说明:该事件检查flexigrid的最后一列的值,如果不等于无操作,将以ajax的方式执行update_msgState.php程序,该程序主要用于更新flexigrid中的记录项的状态字段值,和一般程序也没什么两样,执行成功会输出success,在这里必须提及我对flexigrid.js文件的两处改动:
- //大概1421行
- $.fn.flexReload = function(p) { // function to reload grid
- return this.each( function() {
- if (this.grid&&this.p.url){
- //roby added 2 lines 针对url参数和onSuccess被自定义后却并没有起作用,自行设置的,其他项如果也是如此,可以采用此种方法
- if(p.url!=undefined) this.p.url=p.url;
- if(p.onSuccess!=undefined) this.p.onSuccess=p.onSuccess;
- if(p.sortname!=undefined){this.p.sortname=p.sortname;this.p.sortorder=p.sortorder;} this.grid.populate();}
- });
- }; //end flexReload
- //大概389行
- if (p.total==0)
- {
- $('tr, a, td, div',t).unbind();
- $(t).empty();
- p.pages = 1;
- p.page = 1;
- this.buildpager();
- $('.pPageStat',this.pDiv).html(p.nomsg);
- //roby added 1 line 这里主要是为了使onSuccess在即便flexigrid初始化调用获得的数据为空时仍然会执行(默认不执行,至于应不应该这么做,还是看具体需求吧,我在后面的例子中会用到)
- if (p.onSuccess) p.onSuccess();
- return false;
- }
写到这里,发现篇幅已经很长,而且在方式上我想最好是给出一些在线的demo,这个工作我往后有时间了再整理吧,其他的将在后续文章中完成,感谢各位的支持。
相关推荐
使用JavaScript来初始化Flexigrid,设置其配置项,例如分页、列定义等。例如: ```javascript $("#flex1").flexigrid({ url: 'server.php', // 数据来源 colModel: [ // 列定义 {display: 'ID', name: 'id', ...
《jQuery插件flexigrid使用总结与进一步优化》 在Web开发中,数据展示和交互是不可或缺的一部分。jQuery插件flexigrid是一款轻量级、功能强大的表格插件,能够帮助开发者快速构建具有分页、排序、搜索等功能的动态...
### FlexiGrid 使用教程 #### 一、FlexiGrid简介 FlexiGrid 是一款非常实用且功能强大的 jQuery 插件,用于实现数据表格的展示、排序、搜索、分页等功能。它提供了丰富的配置选项和自定义功能,适用于各种网页应用...
在项目中使用FlexiGrid,你需要在Web项目中创建一个新目录,例如`WebRoot/`,并将`flexigrid`文件夹中的所有内容复制到这里。接着,在JSP页面中,你需要设置一个HTML表格作为FlexiGrid的容器,例如`...
### Jquery Flexigrid 使用详解 #### 技术栈概览 本文档旨在介绍如何结合Struts2.1.6、Spring、Hibernate、jQuery、Flexigrid、Thickbox及MySQL来实现一个功能完整的Web应用。该应用的核心是通过Flexigrid在前端...
flexigrid使用介绍
jQuery与Flexigrid的结合使用在Web开发中常用于创建动态、交互性强的数据表格。Flexigrid是一款基于jQuery的插件,它提供了一种轻量级的方式来展示和操作网格数据,具有分页、排序、搜索等功能,特别适用于数据密集...
基于jQuery的网格插件Flexigrid很棒,网上有很多资料,但没有一篇文章是介绍如何与IntraWeb结合使用的。这里给大家开个头,让咱们一同来开发Flexigrid的强大功能。为便于新同学调试,系统自带MDB数据库。 另外,买一...
本篇文章将深入探讨Flexigrid的使用方法,通过实例帮助读者更好地理解和应用。 1. **安装与引入** 在开始使用Flexigrid之前,需要将其库文件下载到项目中。在`Flexigrid`压缩包内,通常会包含`flexigrid.js`(核心...
这个使用手册将详细介绍如何使用FlexiGrid以及其主要属性。 一、FlexiGrid概述 FlexiGrid是一个轻量级的JavaScript插件,类似于Ext Grid,它允许用户通过Ajax动态加载数据,并可从HTML表格直接转化。FlexiGrid支持...
`jquery+flexigrid使用方法.doc`文档很可能是介绍如何将jQuery与Flexigrid结合使用的指南。在实际应用中,首先需要引入jQuery库和Flexigrid的JS及CSS文件,然后通过jQuery选择器找到需要转换为数据网格的HTML元素,...
此外,使用缓存策略能减少不必要的请求,提高响应速度。 通过上述内容,我们可以理解FlexiGrid列表如何利用AJAX进行动态数据操作,以及如何结合服务器端接口实现高效的数据交互。对于Web开发者来说,掌握这些技能能...
- 错误处理:学习如何识别和解决Flexigrid使用过程中可能出现的问题。 - 性能监控:分析数据加载、渲染等过程的性能瓶颈,优化代码以提高加载速度和用户体验。 通过深入学习和实践这个“含源代码的flexigrid JS ...
- **Ajax请求**:FlexiGrid使用jQuery的Ajax方法向服务器发送GET或POST请求,请求参数包括当前的排序条件、分页信息等。 - **服务器响应**:服务器接收到请求后,解析参数,执行相应的数据库操作,然后将结果集以...
- **Ajax调用**:Flexigrid使用Ajax请求向JSP发送请求,获取所需的数据,并自动填充到表格中。 - **HTML模板**:JSP页面可以创建一个包含Flexigrid初始化代码的HTML模板,包括定义列头、设置URL等。 - **Servlet...
在Java环境中,FlexiGrid通常与Servlets结合使用,以服务器端的数据作为数据源,通过JSON格式进行数据传输。 首先,让我们深入了解一下FlexiGrid的核心特性: 1. **数据绑定**:FlexiGrid可以绑定到不同的数据源,...
4. **Flexigrid 使用** Flexigrid是一款强大的表格组件,提供了排序、分页、搜索等功能。在HTML页面中,我们需要引入Flexigrid的CSS和JS文件,并在表格元素上应用`flexigrid()`函数进行初始化。通过Ajax请求获取的...
2. **数据源**:Flexigrid.js可以与各种数据源配合使用,包括JSON、XML、CSV等,只需提供正确的数据格式和URL,就能动态加载和展示数据。 3. **功能丰富**:它内置了多项功能,如排序(asc/desc)、分页、搜索、...
Flexigrid的使用说明: 1. 引入库:首先,你需要在HTML页面中引入Flexigrid的CSS和JavaScript文件。这通常包括`flexigrid.css`和`jquery.flexigrid.js`。同时,别忘了引入jQuery库,因为Flexigrid依赖于jQuery。 2. ...