为.Text Blog 添加 计数器

自己找了个不知道是不是微软的计数器,还得连国外,教育网内好麻烦,就在自己搭的.text blog
上面测试了一个小计数器控件,模仿原作者的很方便,挺好用的calendar控件,

```

@ control language="C#" classname="DottextBlogCounter"  inherits="Dottext.Web.UI.Controls.BaseControl"

1    ```
2@import namespace="System.Data" 
```

@import namespace="System.Data.SqlClient"

1    ```
2@import namespace="Dottext.Framework.Data"
 1<script runat="server">  
 2    // DottextBlogCounter created on 4/25/2005 by:  
 3    //*daqingshu http://blog.csdn.net/daqingshu
 4    
 5    
 6      
 7    /// <summary>  
 8    /// Use session or cookie?  
 9    /// </summary>  
10    void Page_Load(object sender, System.EventArgs e)  
1112     string number = "";  
13     string strSQL = "";  
14     string conn = Dottext.Framework.Providers.DbProvider.Instance().ConnectionString;  
15     HttpCookie oldCookie = Request.Cookies["counter"];  
16     if(oldCookie == null)//if cookie exist,do not count  
17     {  
18      HttpCookie cookie = new HttpCookie("counter");  
19      DateTime dtNow = DateTime.Now;  
20      TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0);//cookie expire time 1 hour  
21      cookie.Expires = dtNow + tsMinute;  
22      Response.Cookies.Add(cookie);    
23        
24      strSQL = "UPDATE blog_Config set PageVisitCount = PageVisitCount + 1";  
25      SqlHelper.ExecuteNonQuery(conn, CommandType.Text, strSQL, null);    
26        
27     }  
28     strSQL = "SELECT PageVisitCount FROM  blog_Config WHERE BlogID = " + Convert.ToInt32(CurrentBlog.BlogID);  
29     SqlDataReader rdr =  SqlHelper.ExecuteReader(conn, CommandType.Text, strSQL, null);  
30     if(rdr.Read()){  
31      number = rdr[0].ToString();  
32     }  
33     rdr.Close();  
34       
35     if(number.Length <= 8)  
36     {  
37      for(int i = 8; i >= number.Length; --i)  
38      {  
39       number = "0" + number;  
40      }  
41     }  
42       
43     NumberToPicture(number);  
44    }
45    
46    
47      
48    private void NumberToPicture(string number)  
49    {  
50     System.Web.UI.WebControls.Literal Literal1 = new Literal();  
51     System.Web.UI.WebControls.Literal Literal2 = new Literal();  
52     Literal1.Text = "您是第";   
53     phImage.Controls.Add(Literal1);   
54     if(number.Length > 0)  
55     {  
56      for(int i = 0; i < number.Length; ++i)  
57      {  
58       StringBuilder strImage = new StringBuilder();//maybe I missing the System.text namespace if it doesn't work  
59       strImage.Append("~/Images/counter/eggBlue/");  
60       strImage.Append(number[i]);  
61       strImage.Append(".gif");  
62       System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();  
63       image.ID = "image" + i.ToString();     
64       image.ImageUrl = strImage.ToString();  
65       phImage.Controls.Add(image);  
66      }  
67       
68     }  
69     Literal2.Text = "位访客。";  
70     phImage.Controls.Add(Literal2);   
71    }
72    
73    
74      
75    </script>
1<asp:placeholder id="phImage" runat="server"></asp:placeholder>

的确是个很简单很小的功能,还修改了数据库结构,在表blog_Config里面
添加PageVisitCount字段,使用的时候,需要修改PageTemplate.ascx文件,在里面添加

```

@ Register TagPrefix="overflow" TagName="DottextBlogCounter" Src="~/Skins/DottextBlogCounter.ascx"

1    合适的位置添加

<overflow:dottextblogcounter id="DottextBlogCounter" runat="server"></overflow:dottextblogcounter>

1另外得自己找好看的图片
Published At
Categories with Web编程
Tagged with
comments powered by Disqus