轉(zhuǎn)帖|其它|編輯:郝浩|2011-03-28 14:21:54.000|閱讀 1110 次
概述:對于單據(jù)頁面,可能最常見的實現(xiàn)方法就是使用微軟的控件,拖來拖去.但隨之而來的問題,就是需求不斷變化,可能需要維護的字段不斷增加和刪改,這樣就要頻繁的修改這個頁面,增加或刪除某些控件,取值和賦值代碼也要一并修改.
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
公司一直在做WebForm軟件,所以經(jīng)常要創(chuàng)建新頁面來完成某些功能,如數(shù)據(jù)的增刪改查等.對于單據(jù)頁面,大家一定不陌生.
可能最常見的場景就是一個列表頁面+一個單據(jù)頁面,列表頁面使用網(wǎng)格控件展示批量數(shù)據(jù),單據(jù)頁面用來展示單條數(shù)據(jù),并同時可新增和編輯.
對于單據(jù)頁面,可能最常見的實現(xiàn)方法就是使用微軟的控件,拖來拖去.但隨之而來的問題,就是需求不斷變化,可能需要維護的字段不斷增加和刪改,這樣就要頻繁的修改這個頁面,增加或刪除某些控件,取值和賦值代碼也要一并修改.
要說麻煩,其實也簡單,就是控件拖來拖去的事情,要說簡單,也挺繁瑣,字段只要發(fā)生變化,就要修改一次.
我使用過PowerBuilder開發(fā)工具,里面的數(shù)據(jù)窗口功能確實很強大,它不必關(guān)注加載哪個具體數(shù)據(jù)窗口,因為它提供一整套如何取值,賦值及UI交互的方法.那我們可不可以移植到WebForm里呢?后來發(fā)現(xiàn)Panel控件與PowerBuilder中的數(shù)據(jù)窗口功能很接近,但它只是一個容器,不提供任何方法.好,我們對此控件進行打造.
首先要可以加載控件,使用Panel.Controls屬性,動態(tài)加載控件即可,這里我們先看一控件是如何存儲的?我設(shè)計了一個表,如圖-1所示
圖-1
部分字段說明:
編碼類型和名稱 下拉菜單,CheckBoxList,RadioButtonList等控件數(shù)據(jù)源使用.
數(shù)據(jù)列名稱 下拉菜單DataValueField屬性值
顯示列名稱 下拉菜單DataTextField屬性值
樣式布局 針對RadioButtonList/CheckBoxList控件使用,設(shè)置布局,水平和欄目個數(shù)
下面看一個示例,如圖-2所示
圖-2
我們再看一下根據(jù)這些控件數(shù)據(jù)生成的效果圖,如圖-3所示.嘿嘿,界面丑了點!這里我們可以使用一個HtmlTable來布局控件,代碼在附件的文件中直接下載就可以了.
圖-3
其次,控件還要觸發(fā)事件,前臺事件我們通過Control.Addtibutes.Add方式增加即可,后臺事件可以通過委托實現(xiàn).這里要講一下前臺事件的注冊,我是在封裝Panel控件時,增加一個客戶端事件的屬性,如圖-4所示. 這里要再說明下,屬性上方的這些自定義屬性,每個屬性都有它的含義,有興趣的朋友可以查閱相關(guān)資料,以后我們自己就可以把控件封裝成微軟的那種控件,豈不是很方便哈?
圖-4
其中WebPanelClientEvents類成員如圖-5所示
圖-5
如何調(diào)用呢?如圖-6所示
圖-6
然后在創(chuàng)建控件時,根據(jù)控件編輯類型加載不同的客戶端事件即可,代碼片斷如圖-7所示
圖-7
OK,到目前為止,將控件如何動態(tài)加載到前臺的功能已經(jīng)實現(xiàn),接下來,我們再看看還有什么功能可以實現(xiàn).控件展示出來了,自然要對控件取值和賦值.
其實我們在加載數(shù)據(jù)過程中,可以將TextBox,DropDownList或RadioButtonList這樣編輯類型的控件記錄下來,然后在后臺注冊一個HiddenField控件,將控件列表存在里面,供前臺獲取Panel內(nèi)控件值時使用.我的實現(xiàn)方式如圖-8所示
圖-8
將控件名稱和編輯類型保存在Dictionary<string,string>數(shù)據(jù)類型,然后轉(zhuǎn)成json格式字符串,保存在HiddenField控件里,前臺調(diào)用時,可直接將json格式字符串轉(zhuǎn)為Object對象使用,收集完控件值以后,可以將控件值轉(zhuǎn)為json格式字符串交由后臺處理即可
賦值操作相對簡單些,可以在動態(tài)創(chuàng)建控件時,直接賦值,也可以在前臺根據(jù)控件列表賦值均可.圖-9是下拉菜單觸發(fā)onchange事件的例子,就是所有的下拉菜單控件的change客戶端事件均調(diào)用此方法,通過參數(shù)as_dropdownlistid區(qū)分是哪個控件觸發(fā)
圖-9
至此,一個仿DataWindow控件的WebPanel控件誕生了,最基本的數(shù)據(jù)展現(xiàn),取值賦值都沒問題的,某些功能,大家還可以自行擴展.
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載