jquery Flexigrid只选择一行,增加双击事件,获取数据库ID

Flexigrid(http://www.flexigrid.info/)总体来说还是一款不错的jquery的表格插件,但是速度上面还有些卡,希望官方有更好的解决方法;

前段时间做项目,用到了Flexigrid,遇到了一些问题,如:1怎样才能选中一行,而不是多行;2怎么双击一个表格添加一个事件,如打开一个明细页面;3、如何获取数据库ID。

1、Flexigrid怎样才能选中一行,而不是多行

Flexigrid默认是可以选择多行的,这样一来,在删除一条记录的时候就有些麻烦,必须把选择的多行改为一样,有些不便;

那么就打开“flexigrid.js”页面找到:

$('tbody tr',g.bDiv).each(function (){$(this).click(

function (e) {

.............

}

)}

把 “.............”部分改为:

var obj = (e.target || e.srcElement); if (obj.href || obj.type) return true;

$('tbody tr.trSelected',g.bDiv).each(function(i){$(this).toggleClass('trSelected');});

$(this).toggleClass('trSelected');

保存试试,是不是就只能选择一行了;

2、Flexigrid怎么双击一行添加一个事件,如打开一个明细页面

一般人操作电脑习惯都是双击一行就能打开一个页面,但是Flexigrid默认并没有这功能,那么怎么才能加上这功能,修改如下:

打开“flexigrid.js”页面找到:

addRowProp: function(){

$('tbody tr',g.bDiv).each

(function ()

{

$(this)

添加一个“dblclick”事件,示列代码如下:

.dblclick(

function(e){//添加双击事件

tabtd:first").eq(0).text()

fdbclick(tabid);

}

)

那么 fdbclick函数就是双击所要触发的事件了

3、Flexigrid获取数据库ID

Flexigrid获取ID很不方面,官方提供的列子是把ID放在第一列的隐藏列中,通过$(this).find("td:first").eq(0).text() 来获取的,这样就必须浪费一列,如果再有cid,fid等等就得依次放在隐藏列中,不怎么方面;下面我们来看看有没什么更好的办法,不放在隐藏列中也能获取ID。

我们打开“flexigrid.js” 页面我们会发现有“if (row.id) tr.id = 'row' + row.id;”这么一句,意思对每一行进行赋值ID,

我们打开服务端语言,有这么一句

//以下为PHP代码

$json .= "id:'".$r['id']."',";

$json .= "cell:['".$r['id']."'";

那么你应该知道,这个id的用处了吧,那么我们只要在生成的页面用:

.trSelected', grid).attr("id").replace("row","");

就能获得ID了,而不用再用一个隐藏列来获取了

贴张图:

有些真实数据模糊了,呵呵

我把我改写后的”flexigrid.js“,上传下,供大家下载,可能不是最新版本,大家想要最新版本可以去官方http://www.flexigrid.info/