自動化投票區、網路問卷、問卷調查,如何規劃與設計?#2 (程式篇)動態產生畫面與控制項

摘要:自動化投票區、網路問卷、問卷調查,如何規劃與設計?#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

Xp13157

微軟 MVP 的 ASP.NET 4.5 專題實務 [II]-範例應用與 4.5 新功能【VB/C# 雙語法】

繁體中文,MIS2000 Lab. 周棟祥、吳進魯,松崗 出版日期:2013-08-08

$820 售價: $623 購買後立即進貨

<內容簡介> 本書以最新的 .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 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


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 (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估