New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Survey Module: No Stored Procedures

We plan to work on the Survey module over the next 6 months. The biggest change is that we will use the DAL+. There will be no stored procedures. The code will use parameterized sql.

The last post about the Survey module brought a great comment from Stephen Nill:

I wonder if it should even be called a survey module. The word "survey" connotes questions driven by conditional logic. Shouldn't this really be called a "Poll" module?

Now, if we really want to make this module stand out, why not actually make it a true survey module?

Just thinking out loud....

Well Stephen, we heard you loud and clear. The biggest improvement will be that you can have "conditional logic". Basically, you can specify that some questions will show based on answers to other questions.

Here are the notes we will be working from. All is subject to change:

Survey 5.0

  • Allow Surveys to be easily created and administered
  • Provide an example for beginning DotNetNuke module developers
Module Overview:
  • Allow “Conditional Logic” to be used in Surveys
  • Comply with XHTML
  • Implement Localization
  • Implement IPortable
  • Implement a new screen that allows you to enter Survey questions (use ASP.NET 3.5 controls)
  • Implement a new screen for displaying Survey responses (use ASP.NET 3.5 controls)
  • Allow “Anonymous” or “must be signed in” mode for each Survey
  • Allow export of Survey data
  • Allow Survey data to be erased 
  • Implement Charting using (
  • Use GridView control to display results and allow the name of the .css style sheet to be set in Module Settings for styling
Anonymous respondents
  • When “Allow unauthenticated users” is set in module settings, a “cookie value” will be used to determine if a user has already responded to the survey.
  • An automatic “cookie value” will be created when module is instantiated on a page
  • Module settings will allow the “cookie value” to be set and changed.
  • When the “cookie value” is changed, previous anonymous respondents will be allowed to take the survey again. 
  • If a user is logged in as an authenticated user, the presence of a “cookie value” will not prevent them from responding to the survey.
Conditional Logic
  • When creating questions for a Survey, “Conditional Logic” can be used to alternatively show and hide other potential questions.
  • The branching is only available on question level not answer level (you cannot suppress a possible answer)
  • An example of using “Conditional Logic” to create a Survey:
  1. Create question 1 and question 2 and enter the possible answers for each
  2. For question 3, you can indicate that the question will only show if:

1. Question 2 has been answered (or not). Note, question 2 may not have been answered because it may not have been shown due to constraints placed on it by question 1.

2. Question 1 has been answered and a specific value has been selected (a drop down of all possible answers shows up).

1. If a constraint has been placed on a specific value of another question, that constraint will be removed if that value is changed.

  • When a Survey reaches a question that causes conditional branching, the remaining questions will not display until that question, and all other questions preceding it have been answered.
  • When all coordinal branches have been satisfied, the Survey respondent must click the “Submit Survey” button to have their response recorded.
  • Incomplete Surveys will not be recorded.
  • Each question can be either Single choice (radio button) or multiple choice (check boxes)
  • The order of Survey questions can be changed
  • A survey question cannot be moved to a position above a question that places a constraint on it, now below a question that uses it as a constraint.
  • Implement a single .sql script that “rolls up” all previous .sql scripts. Allow all previous version of the Survey to be upgradable to the latest table schema
  • Implement the .txt file that will remove the assemblies from the previous non dynamic version of the Survey module


Dave Pusch
has this module/project been completed? if so where can i find it?

Dave Pusch Tuesday, December 3, 2013 12:59 PM (link)
cathal connolly
@Dave -this post is 4 years old - the latest survey module can be found at
cathal connolly Tuesday, December 3, 2013 1:22 PM (link)

Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out