解決easyui datagrid加載數據時,checkbox列沒有根據checkbox的值來確定是否選中


背景:

    昨天幫朋友做一個easyui datagrid的小實例時,才發現easyui datagrid的checkbox列,沒有根據值為true或false來選中checkbox,當時感覺太讓人失望了,這樣的問題就沒有解決,太不人性化了。因為從去年到今年一直用的是miniui,所以用起來就會有對比了,easyui和miniui各個方便相比差的太遠了,也有可能是miniui是商業的吧!

  記錄下來解決方法,以便日后用的時候方便查找,如果有更好方法請留言,互相學習學習!

 

問題:

  先上個幾個圖片讓大家有一個直觀的印象

easyui datagrid表格的列配置內容

json數據

datagrid顯示的效果

   就是一個簡單的datagrid,有一個checkbox列,問題就出在checkbox列,當加載數據時checkbox列的值有的給的是true,但是給true的checkbox卻沒有被選中,這就是問題的所在,相信大家從圖片中也能看出,現在前端UI很多,但大多數的datagrid應該實現了這個功能。

 

解決方法:

方法一:在onLoadSuccess事件中處理

代碼如下:

        function onLoadSuccess(data) {
            var rowData = data.rows;
            $.each(rowData, function (idx, val) {
                if (val.ck) {
                    $("#dg").datagrid("selectRow", idx);
                }
            });
        }

此方法是從網上找的,但是感覺不是很好,而且數據多了,效率肯定不行了,所以就有了方法二。

 

方法二修改easyui源代碼

跟蹤源代碼最后找到了要修改的地方,主要修改renderRow方法中的checkbox分支

源代碼如下:

                    if (col.checkbox) {
                        cc.push("<input type=\"checkbox\" name=\"" + _69e + "\" value=\"" + (_69f != undefined ? _69f : "") + "\">");
                    } 

 仔細一看發現的的確確,沒有實現此功能,其實很簡單,改一下當_69f為true的時候加上checked="checked"的屬性即可(注意:我改的是1.3.5的源代碼)。

改后的代碼如下:

                    if (col.checkbox) {
                        //<input type="checkbox" value="true" checked="checked"/>
                        cc.push("<input type=\"checkbox\" name=\"" + _69e + "\" value=\"" + (_69f != undefined ? _69f : "") + "\"" + (_69f ? "checked=\"checked\"" : "") + "\"/>");
                    } 

 

成果:

上一個簡單的圖片來看一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM