摘要:自動化投票區、網路問卷、問卷調查,如何規劃與設計?#2 (動態產生畫面與控制項)
動態加入ASP.NET Web 控制項 .Controls.Add()
上一篇文章提到的觀念,
自動化投票區、網路問卷、問卷調查,如何規劃與設計?#1(觀念篇)......考驗初學者能力的一門課
我試著在這篇文章裡面落實。
當然,您必須看過我之前的「投票區」一系列的範例。
因為很多技巧,都源自那邊。
或是您已經完成書本裡面,自動化投票這一章的練習。
「下集」的第十一章(ASP.NET 4.0 專題實務(II) ---- 範例應用與 4.0新功能。松崗出版)
[網路書店]PChome 24hr
下集(第二版),VB、C#雙語法
=============================================================================
先來看看執行成果吧。
以下是投票、網路問卷的主畫面。
當然,細部功能我還沒 100%完成。
這個範例要強調的是「當每一個題目都設定完成後,我們可以動態地產生在畫面上」
這不是一個靜態的、固定的網路問卷
您一開始出題的時候,就可以設定每一個題目的「型態」 --- 單選、複選、文字輸入等等。
如果是單/複選題,最多可以設定到 15個子選項。看了下圖就知道。
=============================================================================
資料表的規劃與關聯
WebQuestion_M(就是Master,主檔)
記錄每一次的問卷「主題」、開始日期、結束日期、說明與備註。
WebQuestion_D1(就是Detail,明細檔)
這次問卷的每一個題目,題目屬性(是否必填?)、題目類別(單選、複選、文字輸入.....等等)
如果是單選/複選題,那就更麻煩了。
需要第二個(Detail,明細檔)來記錄 單選/複選題 的「子選項」。例如:WebQuestion_D2
舉例來說:
(單選題)請問您的性別? ( )男、( )女
這時候,「男」「女」這兩個子選項,就要存放在這 WebQuestion_D2資料表裡面。
我之前的文章(自動化投票區),其實就是完成這裡的功能。 在此尚未考慮「跳題」的功能,抱歉!
=============================================================================
HTML畫面設計(.aspx檔)
您可以看見,我的畫面很簡單。
除了兩個 Label、一個按鈕之外,只用到一個 PlaceHolder控制項。
我利用書本「上集」第三章 Ch. 3-12提供的小技巧。
以資料庫裡面提供的資訊,動態地加入控制項。
單選就是 RadioButton / 複選就是 CheckBoxList....以此類推....很簡單!
這個範例的功能(技巧)與程式,
完全都在書本裡面公開了。...................範例下載:
WebQuestion_AutoVote.rar test_Data.rar
2011/5/9 補充:
當使用者填答問卷之後,您必須把他填寫的「值」取出來。
也就是上面程式中,Button1_Click事件的程式碼(抱歉,我暫時沒寫上去)
才能寫入DB 或是取得問卷的結果。
您可以參閱這篇文章:[習題].FindControl()方法 與 PlaceHolder控制項(動態加入「子控制項」的錯誤)
或是參閱這篇文章:動態新增Textbox並取值
或是 http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20131201003840VG5.html
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'== 產生投票、問卷的畫面
'*** 千萬不可寫 IF判別式,不然會抓取不到「動態產生」的控制項!! ***
'If Not Page.IsPostBack Then
Generate_Page()
'End If
End Sub
'== 使用者填答問卷、或是投票的結果,回寫資料庫。
'== 這裡只是一個示範。我抓取畫面上兩個控制項作為 Demo。
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'-- 抓取第一個 CheckBoxList
Dim CBL1 As CheckBoxList = PlaceHolder1.FindControl("D1_1")
Dim CBL1_Value As String = ""
For j As Integer = 0 To (CBL1.Items.Count - 1)
If CBL1.Items(j).Selected Then
CBL1_Value = CBL1_Value & CBL1.Items(j).Text & ","
End If
Next
Response.Write(CBL1_Value)
'-- 抓取第十個 TextBox控制項
Dim tb As TextBox = PlaceHolder1.FindControl("D1_10")
Response.Write(tb.Text)
End Sub
上面 Button1_Click事件裡面,我只是作一個簡單的示範。
表示「可以抓取到 -- 畫面上 動態產生的控制項 的 "值"」
如果您需要更強大的功能(例如:動態取 "值" ),請您發揮創意,自己修改!!!
不要伸手來索取 Code(~~沒人欠你)
網路上,絕對沒人為您的需求,專門寫一份 100%合用、保證 Copy/Paste就能用的程式碼。
如果您想 [免費地] 拿這些東西,別作夢!(當然,你願意出錢,人家也未必就得收....)
我們提供自己的作法,如果能提供您一些靈感、或是給您帶來一些啟發那就夠了。
(那怕您覺得這方法很爛,至少啟發您不要這樣用! 也代表您有能力,去看出別人的範例有缺失)
網路上,大家互助而已,但並非虧欠您!............所以不要跟我要現成的 Code(~~沒人欠你)
=============================================================================================
掌握幾個原則,您也可以跟我一樣,隨手就能寫出來。
(1). 熟悉每一個基礎的 Web控制項就好了。
例如:單選、複選、PlacerHolder等等,就行啦!!!請看上集「第三章」
這東西完全不需要用到「大型控制項(例如:GridView)」,用了只是自找麻煩、自尋死路!
我的畫面也不醜吧!何需為了「表格」的功能(畫面排版的美觀),搞一個 GridView當成絆腳石?
(2). 先把流程想通了(多作、多觀摩人家的網路問卷是怎麼作的?)
把自己的資料表規劃妥當,就成功 80%了!!
請看下集「第十一章」
(3). 有基礎的 ADO.NET程式能力。
以我為例,我用最簡單的 DataReader + MARS(多重結果作用集),搭配兩三個迴圈,就OK啦。
請看上集「第十四章」
下一篇文章,使用 GridView的樣版 來作同一個功能,
請看 ---- 自動化投票區、網路問卷、問卷調查,如何規劃與設計?#3 (GridView篇)動態產生畫面與控制項
*************************************************************************************************
2013年,推出本書第三個版本。對應 .NET 4.5 / VS 2012
本文已經收錄在書籍之中:http://www.tenlong.com.tw/items/9572241729?item_id=620531
微軟 MVP 的 ASP.NET 4.5 專題實務 [II]-範例應用與 4.5 新功能【VB/C# 雙語法】繁體中文,MIS2000 Lab. 周棟祥、吳進魯,松崗 出版日期:2013-08-08
<內容簡介> 本書以最新的 .NET 4.5 與 VS 2012 進行完全改寫,追加的範例比上一版更多、更詳細。但仍保留了.NET 3.5 SP1~.NET 4.5 一系列的功能,本書內容讓您可以橫跨多版本學習,而且VB 與C# 雙語法教學。 以「實戰經驗」、「務實範例」當作書本主軸,...購買本書... |
*************************************************************************************************
=== 最後要打一下廣告 ==========================
1. 如果您覺得我的描述、寫作方式,符合您的胃口。
2. 如果您看完以後,知道我寫書、介紹一些控制項或是技術........不是「混過去」、「帶過去」而已,而是真真確確地蒐集 "有用的範例",讓您學得更深入!
3. 如果您覺得:我出完書以後,還不定期地提供售後服務,提供補充教材......這樣的互動是 "良性"的,是值得鼓勵的。......已經推出 兩百多篇 補充範例了
4. 如果您(尤其是學生)真的想把基礎學好,而不是 "混"過這一門課就好、而不是寫個(畢業專題的)屍體出來交差(能畢業就好).....那麼.......
請您購買下面的書籍,
東西多到您學不完
上 / 下兩集 for .NET 4.5,兩本書的厚度(我蒐集的範例)將近 三千頁 !!......絕對不會讓您失望
====== 水能載舟,亦能覆舟 ===================================
一個初學者,如果不能熟悉 "每一個"控制項優缺點......
不能立即判斷什麼時候該使用「哪一個控制項」?......
那他永遠是一個 "初學者",永遠走不出「初學」的門檻
[入門]以初學者來看,ASP.NET的GridView可以學到什麼?
http://www.dotblogs.com.tw/mis2000lab/archive/2008/07/15/4501.aspx
[入門的危機]從 "用功的" ASP.NET初學者談起......
http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/11/4858.aspx
GridView有其極限 -- 心裡有劍,手上無劍(不拘泥於手上既有的招式)
http://www.dotblogs.com.tw/mis2000lab/archive/2009/02/25/gridview_limit_090225.aspx
[給初學者的話]完全沒基礎的話.....請不要來問我ADO.NET的問題,謝謝
http://www.dotblogs.com.tw/mis2000lab/archive/2011/01/14/20808.aspx
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 135hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。