2011-08-08 29 views
0

我正在使用jQuery自動完成控件執行搜索三個實體:所有者,經理和租戶。每個實體都保存在數據庫中的自己的表中。需求是否複雜?如何克服這些問題?

在自動完成控制下,將根據用戶的選擇顯示並填充網格(隱藏div)。網格使用文本字段控件,以便用戶可以再次編輯和保存。現在

,我有這些問題:

  1. 當提交到服務器,怎麼知道 用戶曾在哪個實體?是業主,經理還是租戶?我需要將 弄清楚,以便知道數據庫中數據的保存位置。
  2. 正如你所知,服務器端驗證是必須的。如果用戶提交了無效數據,該怎麼辦?常見模式是用錯誤消息重新顯示頁面。
    但在我的情況下,網格/ div顯示基於自己的自動完成搜索,再次顯示頁面只是要隱藏div。

我可以採用任何方式更簡單的方法嗎?

使用的技術是jQuery和Grails框架。

回答

0

這裏有很多事情要做,但它並不是非常重要。一點一點地解決它。

很明顯,初始查詢可以使用連接從匹配指定查詢值的三個表中獲取所有結果。但是,我會首先質疑三個獨立數據庫表的基本原理,因爲它打破了關係數據庫的基本原則 - 如果一個人填充兩個不同的角色,則重複字段並可能重複數據(經典:「不太可能,但理論上可能的情況「)每個人都是一個人,每個人都會有類似的數據需求,例如名字,姓氏,地址,城市等。爲什麼不將」人「信息存儲在表中,然後有一個單獨的表格,根據id爲該關係定義一個人,或者在「人員」數據庫中有一個字段定義他們的角色?最終,爲了這個工作,你必須有一些通用的標識符,系統可以查看它來告訴它該人擁有什麼樣的角色。

如果你想保留現有的結構,我想你必須做一個複雜的連接,將每個表的ID作爲Owner_id這樣的字段名進行別名,然後你可以使用它來根據你的決定他們屬於...表沒有效率!

我會親自查詢信息到jQuery Datatables,這是目前功能最豐富的網格。它確實有editable regions available,並且運行良好。 UI端的技巧是初始化數據表,首先使用來自ajax源的空結果集,然後使用命令「刷新」它oTable.fnDraw(false);

最後,爲了保存我會把ID保存的值和jQuery Ajax將其保存到腳本中。我會通過該ID在數據庫上運行查找來查看它有什麼關係,這是更好的規範化將允許您根據他們的關係狀態(所有者,經理或租戶)簡單地查詢以獲取該值的位置。從那裏,根據計算出的ID和表名運行數據庫更新並循環查看以指示成功並返回到「主屏幕」

+0

需要更多換行符。另外,牛鈴。 – rockerest

+0

@rockerest,說什麼? – bpeterson76

+0

@ bpeterson76如何使用一個表作爲層次結構並使用鑑別器列? – Chiron