EasyUi datagrid 單選框選中事件

2022-01-17 10:21:24 字數 1716 閱讀 3108

easyui datagrid中的單選框預設是這樣定義的

columns: [[

]]。平常使用沒什麼問題,但今天下等我要獲取單框選中事件時,出了點問題。

因為這個checkbox是獨立於行的,所以單擊這個checkbox時,不會觸發easyui datagrid的onclickrow事件。

使用者在單選框上打了勾,最後卻被告知沒有行選中,這不是bug嗎?

這是我們碼農絕對不能忍受的,於是乎,對easyui datagrid的改造開始了。

首先,我重新定義checkbox,**如下:

columns: [[

}]]這下子,checkbox與行成為一體了,單擊checkbox時,行會選中,但新問題來了,單選行時,checkbox並不會選中。

於是,繼續改造。

在onclickrow事件中我定義,行選中,對應的checkbox也要被選中。

**如下:

onclickrow: function

(index, data)

這樣,行被選中了,但單擊其它行中,原來的行的checkbox繼續保持被選中,並沒有被取消,這與期望不符呀。

於是,我繼續改造,這次改造的目標,就是單擊哪行,哪行及它的checkbox被選中,其他的不被選中。

**如下:

onclickrow: function

(index, data)

到這個時候,還有其它問題,比如說:第一次單擊的時候是選中,第二次,我希望能取消選中。

於是**繼續改造。改造完成之後的**如下:

var selectindex = "";

function

userlistload() ,

pagination:

true

, pagesize: 15,

singleselect:

true

, showpagelist:

false

, pagelist: [5, 15, 15],

rownumbers:

true

, nowrap:

false

, loadmsg: 'load……',

columns: [[},,

,]],

onclickrow:

function

(index, data)

var ischeck = $('#userlist').datagrid("getpanel").find(".datagrid-view2 .datagrid-body table input[type='checkbox']:eq(" + index + ") ").attr("checked");

if(ischeck)

else

else

}selectindex =index;

}});

到此,目標基本達成,效果如下圖所示。

聰明的你,是否發現,這裡其實還有乙個問題的,就是當對某一行單擊三次及三次以上,選中和非選中的切換是有問題的。

不過,我並不打算在這裡解決了,有興趣可以自己試試,必竟自己解決問題的那種喜悅和成就感是其他事情無法替代的。

EasyUI datagrid 使用小結

用了easyui框架一段時間了,這個前端框架用起來還是挺方便的,也有很多現成的控制項,看看官方文件應該還是能比較快用起來的。在這裡記錄一下一些常用的控制項的方法,遇到過的bug或者當初耗了一點時間來實現的功能吧。var pager dg datagrid getpager 獲取分頁 物件 var p...

easyui datagrid 多表頭設定

最近在做二維報表,要求報表的表頭自定義。在網上找了好久二維報表的外掛程式,一直找不到合適的。後來就用easyui 中的datagrid替代了一下。根據實際需求,統計的資訊可能不是乙個模組中的字段資訊,所以需要把模組和模組下的字段都顯示出來,這就用到了 中的合併單元格,但是在datagrid中如何實現...

easyUI datagrid 前端真分頁

前文再續,書接上一回。easyui datagrid 前端假分頁 真分頁是easyui datagrid 的預設方式。所謂真分頁,就是後台傳給前端的資料,真的是分頁後的資料。而假分頁,是全部資料。easyui datagrid 向後台請求資料的時候,會自動將頁號 page 每頁數量 rows 作為引...