easyui datagrid中的單選框預設是這樣定義的
columns: [[
]]。平常使用沒什麼問題,但今天下等我要獲取單框選中事件時,出了點問題。
因為這個checkbox是獨立於行的,所以單擊這個checkbox時,不會觸發easyui datagrid的onclickrow事件。
使用者在單選框上打了勾,最後卻被告知沒有行選中,這不是bug嗎?
這是我們碼農絕對不能忍受的,於是乎,對easyui datagrid的改造開始了。
首先,我重新定義checkbox,**如下:
columns: [[
}]]這下子,checkbox與行成為一體了,單擊checkbox時,行會選中,但新問題來了,單選行時,checkbox並不會選中。
於是,繼續改造。
在onclickrow事件中我定義,行選中,對應的checkbox也要被選中。
**如下:
onclickrow: function這樣,行被選中了,但單擊其它行中,原來的行的checkbox繼續保持被選中,並沒有被取消,這與期望不符呀。(index, data)
於是,我繼續改造,這次改造的目標,就是單擊哪行,哪行及它的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 作為引...