一、是否允許用戶對記錄進行重排序?
當從數據庫中讀取記錄然后反映在表格中,有很多地方可以控制記錄的排序。在不排序的情況下,從數據庫中讀取數據的時候是根據記錄創建的時間先后順序反映在前臺的表格中。為了控制顯示的順序,數據庫管理員可以在數據庫層面上,針對這張表格創建一張視圖,并在視圖中設置排序規則,來改變默認的排序順序。這張方式效率比較高,但是也比較死板。因為只有數據庫管理員才能夠更改這個排序規則。其次在Java平臺中,將相關的SQL語句傳遞給數據庫以獲取想要的數據時,也可以利用order by關鍵字來設置排序的順序。不過這跟數據庫層面上設置一樣,也有一個致命的缺陷,即這個排序規則必須預先設置好。如果用戶不滿意當前的排序規則,則必須要系統管理員或者開發人員幫忙才能夠更改排序方式。顯然這兩個排序方式都不是很靈活。
其實用戶需要的是在前臺應用程序窗口中,可以根據需要對任何一個字段進行排序。如點擊某個字段名字,就根據這個字段名進行排序。在Java平臺創建表格的類中,本身就已經集成了重新排列的功能。如在創建表格的時候,可能需要用到一個JTableHeader類(可以用這個類創建不支持滾動條的表格),在這個類中,有一個setRecorderingAllowed方法,其會有true與false兩個返回值。如果這個方法返回的時true,則表示允許用戶在這個表格上對記錄進行重新排序。如果返回的是false的話,則表示用戶無法在表格上對記錄進行重新排序。如果不滿意現在的排序規則,只有要求系統管理員或者開發人員在后臺更改排序規則。
對這個排序規則的設置,筆者有一個建議。首先程序開發人員或者數據庫管理人員要根據用戶常見的需求,即最常用的排序規則來進行設置。如此的話,用戶一打開前臺表格,就可以得到自己想要的排序方式。然后在表格上也允許用戶進行重新排序。當用戶有需要的時候,可以輕易實現按任何一個字段進行排序。筆者認為這種排序規則比較合理。在實際應用程序開發中,筆者也是如此做的。不過這里需要注意一點,如果查詢出來的紀錄比較多,此時即使在前臺對記錄進行排序,效率也會比較低。為此對于大記錄的表格,筆者的建議是在數據庫設計或者應用程序開發中,就要評估用戶最常常用的排序規則。如在產品信息窗口中,可以按關鍵字或者產品類別進行排序。如此就可以最大程度的減少二次排序,提高應用程序的性能。
二、是否允許對表格中的內容進行編輯?
在表格創建的時候,還需要注意是否允許用戶對表格中的數據進行更改。對于這一點程序開發人員也可以在多個層面對其進行控制。如某個表格對于任何用戶來說都是只讀的,只允許應用程序對其進行更新,那么就可以在數據庫層面進行控制。如對于系統日志表格來說,用戶就不能夠進行更改,只有查詢。為此就可以針對這張表格創建一張只讀的視圖,供用戶查詢使用。而應用程序在更新的時候,則直接更新對應的基礎表格。這就是通過在數據庫層面對表格中的內容是否允許編輯進行控制。
除此之外,還可以通過權限來進行控制。如可以在數據庫中設置不同的用戶、不同的權限來控制前臺表格對應的后臺數據庫表格的讀寫權限。在應用程序中,也可以控制對這張表格中內容的編輯能力。默認情況下,利用Java提供的現有類創建表格時,是允許用戶對表格中的內容進行編輯的。如用戶只要雙擊單元格,就可以對表格中的內容進行更改。如果系統管理員不希望用戶對表格中的內容進行更新,則就需要重構JTable類中的isCellEdittable方法。默認情況下,這個方法返回的值是true,表示允許用戶對其進行更改。如果返回的時false的話,在禁止用戶對單元格進行編輯。
新聞熱點
疑難解答
圖片精選