用户控件ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="249VoteControl.ascx.cs" Inherits="FirstWeb._249VoteControl1" %>
您对公司餐饮服务是否满意?
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem Value="">非常满意</asp:ListItem>
<asp:ListItem Value="">比较满意</asp:ListItem>
<asp:ListItem Value="">一般</asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="Button1" runat="server" Text="我要投票" onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="查看结果" onclick="Button2_Click" />

控件后台代码ascx.cs

/// <summary>
/// 将投票数量写入文件,然后读取出来显示投票结果
/// </summary>
public partial class _249VoteControl1 : System.Web.UI.UserControl
{
public static int readCount(String fielPath)
{
int count = ;
StreamReader sr = File.OpenText(fielPath) ;
while (sr.Peek() != -)
{
count =int.Parse( sr.ReadLine().ToString());
}
sr.Close();
return count;
} public static void addCount(String filePath)
{
int count = readCount(filePath);
StreamWriter sw = new StreamWriter(filePath,false);
count = count + ;
sw.WriteLine(count);
sw.Close(); } protected void Button1_Click(object sender, EventArgs e)
{
String userIp = Request.UserHostAddress.ToString();
HttpCookie oldCookie = Request.Cookies["ipCookie"];
if (oldCookie == null)
{
int flag = RadioButtonList1.SelectedIndex;//---
switch (flag)
{
case : addCount(Server.MapPath("Vote1.txt")); break;
case : addCount(Server.MapPath("Vote2.txt")); break;
case : addCount(Server.MapPath("Vote3.txt")); break;
}
Page.ClientScript.RegisterStartupScript(this.GetType(),"","alert('投票成功,感谢您的参与');",true);
HttpCookie newCookie = new HttpCookie("ipCookie");
newCookie.Values.Add("Ip", userIp);
newCookie.Expires = DateTime.Now.AddSeconds();//Cookie 的过期时间设置为当前时间之后5秒
Response.AppendCookie(newCookie); //---
}
else
{
if (oldCookie.Values["Ip"].ToString().Trim() == userIp.Trim())
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('同一个IP只能投票一次');", true);
} int flag = RadioButtonList1.SelectedIndex; //---
switch (flag)
{
case : addCount(Server.MapPath("Vote1.txt")); break;
case : addCount(Server.MapPath("Vote2.txt")); break;
case : addCount(Server.MapPath("Vote3.txt")); break;
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('投票成功,感谢您的参与');", true);
HttpCookie newCookie = new HttpCookie("ipCookie");
newCookie.Values.Add("Ip", userIp);
newCookie.Expires = DateTime.Now.AddSeconds();//Cookie 的过期时间设置为当前时间之后5秒
Response.AppendCookie(newCookie); //---
}
} protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>window.open('249VoteResult.aspx','','height=500,width=600');</script>");
}

引用控件的页面aspx

<%@ Register Src="~/249VoteControl.ascx" TagName="VoteControl" TagPrefix="uc3" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc3:VoteControl runat="server">//对投票控件的应用
</uc3:VoteControl>
</div>
</form>
</body>

投票结果页面

VoteResult.aspx

<body>
<form id="form1" runat="server">
<div>
<table id="myTable" border="" cellpadding="" cellspacing="" runat="server" style="" >
<h2>查看投票结果</h2> <tr><td>序号</td>
<td>投票意见</td>
<td>票数</td>
<td>百分比</td>
</tr>
<tr><td></td>
<td>非常满意</td>
<td><%=vote1%></td>
<td><%=vote1percent%> % </td>
</tr>
<tr><td></td>
<td>比较满意</td>
<td><%=vote2%></td>
<td><%=vote2percent%> % </td>
</tr>
<tr><td></td>
<td>一般</td>
<td><%=vote3%></td>
<td><%=vote3percent%> % </td>
</tr>
</table>
<h3>参与投票人数共<%=count%></h3>
</div>
</form>
</body>

VoteResult.aspx.cs

  public int vote1;
public int vote2;
public int vote3;
public String vote1percent;
public String vote2percent;
public String vote3percent;
public int count;
public static int readCount(String fielPath)
{
int count = ;
StreamReader sr = File.OpenText(fielPath);
while (sr.Peek() != -)
{
count = int.Parse(sr.ReadLine().ToString());
}
sr.Close();
return count;
} protected void Page_Load(object sender, EventArgs e)
{
vote1 = readCount(Server.MapPath("Vote1.txt"));
vote2 = readCount(Server.MapPath("Vote2.txt"));
vote3 = readCount(Server.MapPath("Vote3.txt"));
count=vote1+vote2+vote3;
vote1percent = (Convert.ToDouble(vote1) * / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点
vote2percent = (Convert.ToDouble(vote2) * / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点
vote3percent = (Convert.ToDouble(vote3) * / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点 }

总结:

【1】对控件的引用<%@ Register Src="~/249VoteControl.ascx" TagName="VoteControl" TagPrefix="uc3" %>

<uc3:VoteControl runat="server">
    </uc3:VoteControl>

【2】关于文件的读写

StreamReader sr = File.OpenText(fielPath) ;

  while (sr.Peek() != -1)
      {
          count =int.Parse( sr.ReadLine().ToString());
       }

StreamWriter sw = new StreamWriter(filePath,false);

sw.WriteLine(count);

【3】疑惑: Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('同一个IP只能投票一次');", true);

【4】关于查看投票的结果百分比问题

将double型转换为string型。并保留2位小数点

vote1percent = (Convert.ToDouble(vote1) * 100 / Convert.ToDouble(count)).ToString("0.00");

【5】最后发点牢骚---困扰程序运行的都是一些小的细节,以前老师总说:现在偷得懒以后总要还的,

现在真的被一些基础的细节问题扰的崩溃。写代码需要沉下心,再沉下心,忌心浮气躁。

《ASP.NET1200例》实现投票的用户控件的更多相关文章

  1. 《ASP.NET1200例》嵌套在DataLisT控件中的其他服务器控件---DropDownList控件的数据绑定

    aspx <script type="text/javascript"> function CheckAll(Obj) { var AllObj = document. ...

  2. asp.net动态加载ascx用户控件

    原文:asp.net动态加载ascx用户控件 在主aspx/ascx文件中,将目标ascx1,ascx2控件拖拉到其页面中,然后删除,目的是要生成:Register 代码,然后在主文件中定义DIV或T ...

  3. ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用

    在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMet ...

  4. asp.net 动态添加多个用户控件

    动态添加多个相同用户控件,并使每个用户控件获取不同的内容. 用户控件代码: 代码WebControls using System; using System.Collections.Generic;  ...

  5. (九)ASP.NET自定义用户控件(2)

    http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...

  6. ASP.NET MVC中加载WebForms用户控件(.ascx)

    原文:ASP.NET MVC中加载WebForms用户控件(.ascx) 问题背景 博客园博客中的日历用的是ASP.NET WebForms的日历控件(System.Web.UI.WebControl ...

  7. Asp.net 恢复页面内用户控件内的控件ClientID

    众所周知在Asp.net中如果一个页面添加了一个用户控件(或母版页),那么用户控件内的控件的   ClientID号会被自动添加页面中用户控件的ClientID 即页面中的控件内的控件ClientID ...

  8. 035. asp.netWeb用户控件之四通过用户控件实现投票和结果分析

    用户控件Vote.ascx代码 <%@ Control Language="C#" AutoEventWireup="true" CodeFile=&qu ...

  9. 039. asp.netWeb用户控件之七实现具有虚拟键盘的功能的用户控件

    用户控件ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="K ...

随机推荐

  1. Git的基本使用方法和安装&心得体会

    1. git的安装和github的注册.代码托管.创建organization.邀请member. (1)git的安装 因为我电脑是windows系统,所以下载的是git for windows.在官 ...

  2. MyEclipse 8.5配置Tomcat 7.0

    MyEclipse 8.5配置Tomcat 7.0 在窗口(Windows)->首选项(Prefrences)->MyEclipse->Servers->Tomcat 6.x下 ...

  3. c# 多线程 调用带参数函数

    线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (Pa ...

  4. JQuery思维导图

  5. poj1703 并查集

    输入是2个不在一起的人,可以用一个数组来保存和他矛盾的人.这样find的时候就find(hash[]);就可以: #include<stdio.h> #include<string. ...

  6. 在Eclipse 中下载 开源中国码云上的项目

    功能:使用开源中国代码托管(码云)来托管代码,本地的使用Eclipse,该如何配置? 步骤: 1/  在码云 上建一个工程,(为了访问托管工程的权限) 2/  在eclipse中打开名字叫做“Git ...

  7. shell 命令遇到的一些问题

    1.  command not found 一般都是未安装,需要root 权限去安装服务,就可正常使用.比如rz, sz, crontab, sendemail, lftp等 2. rz 传输失败,输 ...

  8. ZOJ 2110 Tempter of the Bone

    Tempter of the Bone Time Limit: 2 Seconds      Memory Limit: 65536 KB The doggie found a bone in an ...

  9. Android消息通知(notification)和PendingIntent传值

    通知栏的自定义布局:转:http://blog.csdn.net/vipzjyno1/article/details/25248021 拓展 实现自定义的通知栏效果: 这里要用到RemoteViews ...

  10. CSS------添加注释框

    my.html <div><a href="#" class="tip">你好<span><k>哈哈哈哈< ...