Title: Site Poll Control
Author: Michael Eccleston
Email: mike@ecclestonsoftware.com
Environment: VB.Net, ASP.Net
Keywords: Control, Database, Polls, Triggers, Stored Procedures
Level: Intermediate
Description: ASP.Net Server Control
Section ASP.Net
SubSection Controls
Introduction
A recent project I worked on required the ability to present site visitors with a poll question. In an effort to learn more about custom server controls that inherit from a CompositeControl, I generated a custom server control to provide this functionality. The effort to create this control was fairly simple and I am providing the control to anybody else that may find it helpful in their projects.
The Poll Control allows you to place the control in your webform, set a few properties and add the available answers and current answer count to the PollAnswers collection and you get the above results on your page. Add the PollControl.dll to your toolbox and then place the control on your form. The look of the control is controlled by CSS stylesheet classes.
The control was designed with a Sql Server Express database as the back end data store. The database consists of three tables, PollQuestions, PollAnswers and PollResults. There are triggers on insert and delete of the PollResults table that maintain the vote results automatically. There is also a stored procedure for inserting or deleting poll results. Aside from the initial setup of the control to display it on your form, all you need to provide is a call to the InsertResult stored procedure in the CastVote event.
If you are interested in learning about triggers and stored procedures in a SQL Server Express database, the code source file may provide you with some learning material. The information is fairly easy to understand and may provide you with a starting point to your own triggers and stored procedures. I have provided all of the database scripts so that you can duplicate the database, and I have provided the source code to call the stored procedures.
Using the control
Properties: |
|
CanVote |
If True the question and answers are presented in the Vote Mode with a Cast Vote button. If False the results are displayed as shown above. |
ShowPrecentages |
If True in the results show the vote percentages. If False in the results show the vote count. |
PollQuestion |
The poll question to present the visitor. |
CSSCaption |
The stylesheet class to use for the PollControl Caption and Question. |
CSSPollClass |
The stylesheet class to use for the PollControl. |
ImagesFolder |
The folder location of the images to use for the result bars. |
VoteCaption |
The text that you want to proceed the vote count. |
Method: |
|
AddPollAnswer() |
AddPollAnswer( PollId, AnswerId, AnswerText, AnswerCount ) |
Event: |
The CastVote event is raised by clicking on the Cast Vote button when the control is in Vote View |
CastVote() |
CastVote( PollId, AnswerId, MemberId ) |
|
Sample code in the code behind is shown below. |
SAMPLE CODE
If Not Page.IsPostBack then
With PollControl1
.CanVote = False
.ShowPercentage = True
.PollQuestion = "What is your poll question ?"
.CSSCaption = "PollCaption"
.CSSPollClass = "PollBack"
.ImagesFolder = "Images/"
.VoteCaption = "Votes Cast :"
' Loop to populate the PollAnswer Collection
.AddPollAnswer( PollId, AnswerId, AnswerText, AnswerCount )
'
End With
End If
Points of Interest
The design of this control provided a learning experience with custom server controls and SQL Server Express triggers and stored procedures.
History