動態可配置表單的設計構思


1、引言

   在瀏覽網站的時候,我們經常會提交一些信息,這些信息也被叫做“表單”,提交信息專業一點也叫做提交表單。

   通常會提交的信息就是注冊信息,登錄信息,登陸之后還需要提交詳細的個人信息,其中就會包括學歷,地址,項目經驗等等。

   還有就是在電商網站,我們還會提交訂單,添加收藏,添加購物車。

   在網絡中,我們每天都會遇到各種各樣的表單,隨着網絡的普及,信息化的普及,很多信息都是通過網絡提交的,我們會頻繁的和表單打交道。

 

那么什么是表單呢?

   表單指的是用戶在頁面中填寫的信息的總和,也是填寫的信息項的總和。表單的主要作用是收集信息。

 

   在百度百科中是這么解釋的。

表單在網頁中主要負責數據采集功能。一個表單有三個基本組成部分:

1、表單標簽;

2、表單域,包含了文本框、密碼框、隱藏域多行文本框復選框單選框、下拉選擇框和文件上傳框等;

3、表單按鈕。

 

 

2、表單的設計

2.1、靜態表單

   表單所有的表單項事先已經固定,比如說有多少個表單項,每一項都是什么類型,那些需要不會再前台顯示,這些表單項的排序,顯示的控制,大多是固定的。

   在應用開發完成之后,如果需要修改表單項,比如說增加表單項,調整表單項的顯示位置。表單項分組顯示,分組控制。這些都會需要修改代碼,甚至是修改數據庫才能滿足要求。

   所有人都希望表單是動態的,動態管理表單項。

 

2.2、動態表單

2.2.1、第一種

 

 

 

優點:

   簡單明了。

   配置簡單。

 

缺點:

   表單信息沒有分類,不便於顯示控制。比如說個人信息中的基本信息,學歷信息,聯系信息,不能動態的分塊顯示。

   屬性不能復用。比如說學歷信息,聯系信息,其實個人表單和企業表單,甚至其他表單也會用到,沒有必要重復配置。

 

2.2.2、第二種

 

 

缺點:

   沒有支持表單的模板化。

 

優點:

   配置更靈活,不復雜。

   支持屬性組的復用。比如說學歷信息屬性組,聯系方式屬性組。

   屬性組可以排序,控制顯示。

 

2.2.3、第三種

 

 

缺點:

   配置復雜,稍顯冗余。

   不容易理解。

 

優點:

   靈活,強大。

   最大化支持動態表單的動態配置需要。

   相同表單,支持多個模板,支持啟用與禁用模板。

 

2.3、靜態+動態

   部分靜態表單+動態表單

 

3、總結

   以上是我設想的三種動態表單的實現方式,圖中是數據存儲的簡單表述。

   如果大家有其他的方式,也請留言。如果允許,我將會補充在本文的后面。

   共享出來,可以幫助更多的人,讓我們一起努力,將動態表單的實現設計的更好更強大。

 

后記

 

2013-09-03 14:40

動態表單的設計,除了要考慮存儲,還要考慮查詢。保存的數據如何查詢,因為原來是列級別的數據,現在都被行化了。

舉個例子:開始我們會設計一張表,有姓名列,性別列,簡介列。但是現在是姓名行,性別行,簡介行。如果是關系數據庫,原來的常規查詢SQL都會失效,怎么辦呢?是用特殊方式實現,還是將這些數據導出到常規數據庫設計中,用老方法查詢。

這可能會用到OLTP(在線聯機事務處理)和OLAP(在線聯機分析處理)的概念。

還 有一種辦法,就是講應用分為兩個部分,命令與查詢。命令包括:增刪改,是對數據的維護。查詢就是獲取數據,可能包括各種獲取接口,獲取參數,獲取維度。這 方面比較有名的就是CQRS(Command Query Responsibility Segregation命令查詢職責分離)。可以將它擴展到系統設計上來。

 

還有就是Field的類型眾多,有一些類 型的儲存還是需要琢磨一下的。常規的單行文本也就是直接存儲一個值就可以了,單多選類型需要存儲的是key,尤其是都選,需要存儲的是多個選中項的 key,多個的個數是不定的,這些key是存儲在一列中,還是用行來存儲,這也是一個撓頭的地方!!!

 

其實個人還有 一個想法。#數據庫#CRUD,create,read,update,delete到底是不是增刪改查呢?我想大家對於其中的read是否等於差是有一 些疑惑的!read按照字面來說就是讀取,讀取和查詢還是有區別的吧。個人覺得讀取!=查詢,read只是單個數據的獲取,查詢是有條件的多行數據的獲 取。所以說CRUD不是增刪改查,更應該叫做增刪改讀。

 

表單項還可能是一個樹形的選擇項,對於這方面還沒有想出好的解決方案。只是覺得應該封裝成一個獨立控件,對於樹形選項的數據加載,選擇之后的存儲,已經將來的匹配查詢,都應該有一整套的封裝。比如說精確單編號匹配,多編號匹配,層級匹配等等。

 

還有一些表單項是單多選是結合的,比如說第一級是只能選擇單個,下一級就可以選擇多個了。

 

還有一些樹形表單項是只能在葉子節點多選。

 

單選和多選的表單項的具體項可以從數據源中加載。先設置數據源,也就是一些key/value的鍵值對,一組,然后再添加單選或者多選表單項的時候,選擇數據源來填充表單項。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM