from批量處理介面效果
當遇到對form上記錄進行批量處理時,一般情況下都會選擇在記錄前面加上覆選框,然後勾選上需要處理的資料,最後獲取勾選的記錄資料進行業務處理:
如果只是新增核取方塊,顯得介面效果太單調,勾選結果顯示也不夠明顯,將勾選的行進行特殊顯示,會使得勾選效果更好。
通過在標準介面查詢類似業務,找到對應api:
效果如下圖:
這樣看起來使用者會更明確的看到選擇的行。
效果已經做出來,但是在操作上,使用者會有一些不便,選擇幾行或者全選還好。但是如果一次連續選擇50條,100條使用者需要點選100次?使用者會瘋掉。
解決方法:
在我們用電腦選擇多個物件時,習慣性使用ctrl或者shift鍵來多選記錄,可以考慮使用這個方法來處理。
通過查詢標準form的庫**,找到了解決方法。
核心在乙個system屬性
name_in('system.mouse_button_modifiers');
返回varchar2。
在when-mouse-click觸發器時,這個屬性會返回在你點選滑鼠時,同時按住的那些按鍵名稱用』+』拼接起來,如:同時按住ctrl和shift時返回shift+control+。有了這個後面問題就好解決了,只需要判斷返回值是否包含control或者shift即可。
處理邏輯:
1. 按住ctrl點選左鍵,如果原來勾選高亮顯示,則變成取消勾選高亮顯示,反之,則變成勾選高亮。
2. 按住shift時需要增加乙個變數記錄上一次點選行last_record
然後再根據當前點選行,迴圈中間所有行,勾選高亮顯示,按住shift的優先順序應該高於ctrl。
注意:因為勾選核取方塊時會觸發when-checkbox-changed,然後也觸發when-mouse-click事件,這樣按住ctrl會導致做兩次事件,此時需要判斷去跳過其中乙個事件。
這樣,就有多種操作方式選擇記錄了,使使用者操作更加個性化,同時節省操作時間。
附:批量處理介面資料獲取的心得:
對於這種勾選批量處理介面資料獲取,首先想到的就是去迴圈介面所有記錄去檢查是否勾選,從而獲取資料。這種方法簡單,**也很好寫。但是當在介面操作時,問題就會出現:只勾選一條記錄,卻要去迴圈整個介面所有資料,還包含沒有fetch到介面的資料。使得處理速度大大增加。「想盡辦法去避免迴圈介面「這是我在做這個功能乙個的體會(全選是不可避免的要迴圈介面了)。所以這種勾選模式要提前去獲取資料。首先定義乙個全域性table型別的變數,當勾選某一條記錄時,將值存在table(:system.cursor_record)裡,取消勾選時table.delete(:system.cursor_record)。這樣在最後處理邏輯是只需要迴圈table就行了。避免去fetch不需要的資料(處理過程中,table中間delete掉的記錄在獲取時會報no_data_found異常,只需要丟擲異常跳過就行了)。即使勾選第一條和最後一條,雖然迴圈table和迴圈介面次數一樣,但是速度卻有很大差別。
批量處理 批量開啟網頁
由於工作中有很多重複性的部分,比如說要更改好多頁面,這樣就需要從excel中拷貝再貼上到位址列中,操作比較繁瑣,而bat檔案可以批量處理,由此我們可以直接將位址做成.bat檔案,只要開啟檔案就可以開啟好多頁面,我總結需要以下幾個簡潔的步驟 1 整理出需要開啟的頁面 此過程可以用excel 或者是no...
hibernate批量更新效果不好
批量更新是指在乙個事務中更新大批量資料,批量刪除是指在乙個事務中刪除大批量資料。以下程式直接通過hibernate api批量更新customers表中年齡大於零的所有記錄的age欄位 tx session.begintransaction iterator customers session.fi...
hinernate 批量處理
在hibernate2.0的處理方法為 下面的 在hibernate的配置檔案中新增 hibernate.jdbc.batch size 20 批量處理的方法為 session session sessionfactory.opensession transaction tx session.beg...