今天項目需要用了下EasyUI的datagrid的行編輯功能,跟著API來,只要是將各種狀態時的處理邏輯弄好,還是蠻不錯的。
開發過程中,遇到了個問題,在編輯完成後我需要獲取datagrid所有處於編輯狀態的行,進行結束編輯後,獲取編輯行的值。這時的操作,我可以是將datagrid所有的行都取出來,然後循環都進行endEdit操作,這樣確實可以做到。但是考慮到,在datagrid中有可能只有少數的行是編輯狀態的,這樣如果全部循環去關閉,明顯的在做一些無用的操作。
正常的思路,我應該是找到正在編輯的所有行,然後有針對性的關閉。但是EasyUI並沒有提供該方法。也在網上找了下,發現在網上問這個問題的人也是存在,但是並沒找到滿意的答案。所以就自己寫了一個獲取的方法。分享出來,希望對需要的人有所幫助。
/* * datagrid 獲取正在編輯狀態的行,使用如下: * $('#id').datagrid('getEditingRowIndexs'); //獲取當前datagrid中在編輯狀態的行編號列表 */ $.extend($.fn.datagrid.methods, { getEditingRowIndexs: function(jq, newposition) { return jq.each(function() { var rows = $.data(jq[0], "datagrid").panel.find('.datagrid-row-editing'); var indexs = []; rows.each(function(i, row) { var index = row.sectionRowIndex; if (indexs.indexOf(index) == -1) { indexs.push(index); } }); return indexs; }); } });
有什麼可以優化的點,或者有什麼問題歡迎大家提出來。