返回列表 發帖
這個 jqGrid 好像範例講解很少,可能是因為它要錢,所以要等你購買版權後去問他。如果他把一堆範例寫給你,可能它就收不到 $$ 了,這是一種傳統的商業成功模式。

你可以換一個
http://code.google.com/p/jquery-datatables-editable/
http://www.phpclasses.org/packag ... database-table.html

最近我在看 Ajax 的資料庫後台管理介紹,國外一些教學有部分是直接抓取已經傳到 client 端的值給你轉成 input text、textarea 作修改,然後直接把修改後的該筆資料顯示到 client 端,再把相關值傳回 server,刪除時是只直接刪除 client 的該筆資料,再傳回後端通知刪除該筆資料,我大概比對傳統非 ajax 模式,發現這會有幾個問題。你在使用這類 ajax 後台管理時可以加以注意。至於你要的做法如何,你自行斟酌,或請有經驗的人(例如壇主)幫忙解答。

如果後台管理只有你一個人有刪修權限,那我提到的這類的 ajax 問題不大,但是如果有多人都有這個權限,問題就來了,隨便舉個例子:
當你修改完後利用 ajax 傳回 server 後台,然後直接把你的修改資料在 client 端顯示時,如果此時也有別人在修改該筆資料、或已經修改完資料、或開啟browser很久後想要修改該筆資料,想想這會發生什麼問題?梗就來了,梗在哪,梗在下面介紹。

假設某甲、某乙、某丙的權限一樣,都有刪修權限,某甲早上 10 點開啟後台,但是臨時有事去撇個風,這時某乙上線把第 10 筆資料改好後 save,某甲撇完風回來要修改第10筆資料,此時他螢幕看到的是尚未被某乙修改前的資料,該筆資料並沒有 server push 的到某甲 client 端螢幕上(像 Comet,這類技術我沒研究),這時某甲修改資料的話, ajax 是抓它 client 端的資料給某甲修改,改完後存回 server 端,如果某甲、某乙改後的資料都一樣,這不過是做個白工還好,如果某甲不小心打錯字,不就把某乙改好的正確資料給錯存?刪除時可能也一樣,當你要刪除某筆資料時,這筆資料卻已經被某乙刪除,也是會有一些問題。

如果你要殺很大,edit 或 delete 前都還會 ajax 再去資料庫抓一次資料顯示到 client 端再做刪修,這樣就跟傳統做法沒什麼不同,只是畫面好看,手續又變複雜而已。


當然問題還有很多,因為某丙還沒出現,請看我有假設三個人,等某丙出現執行份內工作刪修資料時,梗又來了。但是限於時間關係,我無法打太多,要等壇主或有經驗的人來解決問題。

TOP

本帖最後由 jocosn 於 2011-5-11 10:22 編輯

回復 3# wmh

感恩壇主的回覆。
壇主大大,「多人同時編輯」這部分,ajax VS 傳統做法,大大有相關心得可以分享嗎?
最近半年我上網搜了相關資料,總是看了沒什麼感想。
目前現成的 Ajax UI 幾乎都是單人編輯,
如果是小系統單人用 ok,但是面對比較大的case時多人同時編輯,會有很多問題。
像是論壇如果某區有多個版主的話,同時對某個主題作修改會發生什麼情形?

TOP

本帖最後由 jocosn 於 2011-5-13 14:30 編輯

回復 5# wmh

我突然想起,多年前我幫朋友寫 CRUD 時曾想過用 Instant Message 做即時通知,當有資料變動時,順便發一個簡訊告知,然後 client 端自行手動 refresh,但是這個 solution 被我另一個好朋友說這個 solution 不是及時通嗎?我心想Comet 要server 配合,難到有更好的方法?當時可以立刻支援 server push,就只有 IM。

後來想想因為還要 client 端另外申請帳號並安裝 IM,我語帶含蓄(因為我脆弱的心靈怕再一次被傷害說這 solution 不好) 問說可以做及時通知你要不要試試看,後來發現我的朋友很懶還是不好意思怕我再多寫(當年雖然 IM 相關的介紹不多,但是已經有人實做出來,我只要整合就好),說功能不用做到這樣,後來就不了了之。

現在看來,最近這幾年才宣布死灰復燃的 HTML5,他的 WebSocket 好像是個解決方案(但是該篇文章評論有人說 WEBSOCKET 是廢柴一根)。

TOP

返回列表 回復 發帖