网上投票几乎是当今网站不可缺少的一部分,而制作的方式却有多种,大多数静态网站采用的方法是利用多个radioButton逐一添加内容来
实现,而动态网站多采用radioButtonList控件绑定数据库,从而动态获得投票内容.
1.数据库的设计(MSSQL)
如果是流量比较大的网站,则更新投票内容是频繁的工作,好的数据库设计可以让更新相对科学和容易.
先设计一个主表,它记录投票的主题与参与该投票的人数:
create database vote use vote create table voteMaster insert into voteMaster values(1,'尤文降级,米兰被剥夺欧冠,您认为判决是否合理?',0) insert into voteMaster values(2,'您如何评价舍甫琴科告别米兰?',0) |
然后设计从表,它记录了相关主题的详细项目
create table voteDetails insert into voteDetails values(1,1,'非常合理',0) insert into voteDetails values(1,2,'不太合理,判罚过重',0) insert into voteDetails values(1,3,'说不清楚',0) insert into voteDetails values(2,1,'迎接新的开始,米兰舍瓦双赢',0) insert into voteDetails values(2,2,'痛失射手王,米兰将一蹶不振',0) insert into voteDetails values(2,3,'切尔西未必好呆,舍瓦选错了',0) insert into voteDetails values(2,4,'不好说',0) |
2.得到投票主题
新建立一个DB类,用来返回数据库连接对象,这样做的好处是:如果以后数据库有变化,则只需要修改这个类
public static SqlConnection createConnection() |
在设计好的投票栏里添加一个Lable(服务器控件)和RadioButtonList,然后编写代码动态得到主题和内容
private string voteId = "1"; //将用这个字符串变量来控制投票主题 private void Page_Load(object sender, System.EventArgs e) //数据绑定到radioButtonList |
这样绑定了数据库的Label和RadioButtonList就能显示出主题及相关内容了,而切换不同的主题,只需要修改之前定义的变量voteId的值
3.投票
投票要实现的功能,就是点击button后,相应主题的项目票数加1,主题的票数也要加1
在已添加的button(btnVote)上编写代码
private void btnVote_Click(object sender, System.EventArgs e) //更新从表中的itemSum项,条件为voteID为当前指定值,且voteDetailsID为当前选中项的值 |
上面有个方法很常用,那就是radioButtonList的SelectedValue,它能得到当前选定项的Value值
现在发现了一个问题,那就是无法将主表中的票数与从表中的票数联系起来,而我们想要的是从表中某项的值加1,主表中的票数也要增加1,于是自然想到要添加一个Trigger
create trigger voteMaster_update on voteDetails for update as begin Update voteMaster Set voteSum=voteSum+1 Where voteID=(select voteID from inserted) end |
这样投票部分就完成了
4.查看
我们希望查看到的一般就是:各项得到的票数、多少人参与投票(即总票数)
我们先将投票页面的voteId值通过btnView(查看)传递出去
private void btnView_Click(object sender, System.EventArgs e) |
新建一个aspx文件,编写如下代码
private void Page_Load(object sender, System.EventArgs e) //得到通过btnView(查看)传递过来的参数 //得到标题 //得到总票数 //显示标题 //显示总票数 string getAll = "SELECT * FROM voteDetails WHERE voteID="+getID; //利用DataReader的游标显示出从表中的项目与总和 |
点击查看,将显示出相关信息:
非常合理 - 4票
不太合理,判罚过重 - 2票
说不清楚 - 0票
尤文降级,米兰被剥夺欧冠,您认为判决是否合理?
共有6人参加投票