65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.Net 投票服务器控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.31/5 (20投票s)

2006年6月10日

2分钟阅读

viewsIcon

145834

downloadIcon

4994

一个用于对您的网站用户进行投票的自定义服务器控件。

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

Sample Image - maximum width is 600 pixels

引言

我最近参与的一个项目需要向网站访问者展示一个投票问题。为了更多地了解从 CompositeControl 继承的自定义服务器控件,我生成了一个自定义服务器控件来提供此功能。创建此控件的工作相当简单,我将该控件提供给任何可能在其项目中使用它的人。

投票控件允许您将控件放置在您的web表单中,设置几个属性,并将可用的答案和当前的答案计数添加到 PollAnswers 集合中,您可以在页面上获得上述结果。 将 PollControl.dll 添加到您的工具箱,然后将控件放置在您的表单上。 控件的外观由 CSS 样式表类控制。

该控件设计使用 Sql Server Express 数据库作为后端数据存储。 数据库由三个表组成:PollQuestions、PollAnswers 和 PollResults。 在 PollResults 表的插入和删除操作上有触发器,可以自动维护投票结果。 还有一个用于插入或删除投票结果的存储过程。 除了最初设置控件以在您的表单上显示它之外,您只需要在 CastVote 事件中调用 InsertResult 存储过程即可。

如果您有兴趣了解 SQL Server Express 数据库中的触发器和存储过程,代码源文件可能会为您提供一些学习材料。 这些信息相当容易理解,并且可能为您自己的触发器和存储过程提供一个起点。 我提供了所有数据库脚本,以便您可以复制数据库,并且我提供了调用存储过程的源代码。

使用控件

属性
CanVote 如果为 True,则在投票模式中呈现问题和答案,并附有“投票”按钮。
如果为 False,则显示结果,如上所示。
ShowPrecentages 如果为 True,则在结果中显示投票百分比。
如果为 False,则在结果中显示投票计数。
PollQuestion 向访问者展示的投票问题。
CSSCaption 用于 PollControl 标题和问题的样式表类。
CSSPollClass 用于 PollControl 的样式表类。
ImagesFolder 用于结果条的图像的文件夹位置。
VoteCaption 您希望放在投票计数前面的文本。
方法
AddPollAnswer() AddPollAnswer( PollId, AnswerId, AnswerText, AnswerCount )
事件 当控件处于“投票视图”时,单击“投票”按钮时会引发 CastVote 事件
CastVote() CastVote( PollId, AnswerId, MemberId )
代码隐藏中的示例代码如下所示。

示例代码

//
// The control above was populated with the code shown below.

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

关注点

此控件的设计提供了自定义服务器控件以及 SQL Server Express 触发器和存储过程的学习经验。

历史

© . All rights reserved.