为.Text Blog 添加 计数器

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

自己找了个不知道是不是微软的计数器,还得连国外,教育网内好麻烦,就在自己搭的.text blog

上面测试了一个小计数器控件,模仿原作者的很方便,挺好用的calendar控件,

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

<%@import namespace="System.Data" %>

<%@import namespace="System.Data.SqlClient" %>

<%@import namespace="Dottext.Framework.Data"%>

<script runat="server">

// DottextBlogCounter created on 4/25/2005 by:

//*daqingshu http://blog.csdn.net/daqingshu

/// <summary>

/// Use session or cookie?

/// </summary>

void Page_Load(object sender, System.EventArgs e)

{

string number = "";

string strSQL = "";

string conn = Dottext.Framework.Providers.DbProvider.Instance().ConnectionString;

HttpCookie oldCookie = Request.Cookies["counter"];

if(oldCookie == null)//if cookie exist,do not count

{

HttpCookie cookie = new HttpCookie("counter");

DateTime dtNow = DateTime.Now;

TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0);//cookie expire time 1 hour

cookie.Expires = dtNow + tsMinute;

Response.Cookies.Add(cookie);

strSQL = "UPDATE blog_Config set PageVisitCount = PageVisitCount + 1";

SqlHelper.ExecuteNonQuery(conn, CommandType.Text, strSQL, null);

}

strSQL = "SELECT PageVisitCount FROM blog_Config WHERE BlogID = " + Convert.ToInt32(CurrentBlog.BlogID);

SqlDataReader rdr = SqlHelper.ExecuteReader(conn, CommandType.Text, strSQL, null);

if(rdr.Read()){

number = rdr[0].ToString();

}

rdr.Close();

if(number.Length <= 8)

{

for(int i = 8; i >= number.Length; --i)

{

number = "0" + number;

}

}

NumberToPicture(number);

}

private void NumberToPicture(string number)

{

System.Web.UI.WebControls.Literal Literal1 = new Literal();

System.Web.UI.WebControls.Literal Literal2 = new Literal();

Literal1.Text = "您是第";

phImage.Controls.Add(Literal1);

if(number.Length > 0)

{

for(int i = 0; i < number.Length; ++i)

{

StringBuilder strImage = new StringBuilder();//maybe I missing the System.text namespace if it doesn't work

strImage.Append("~/Images/counter/eggBlue/");

strImage.Append(number[i]);

strImage.Append(".gif");

System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();

image.ID = "image" + i.ToString();

image.ImageUrl = strImage.ToString();

phImage.Controls.Add(image);

}

}

Literal2.Text = "位访客。";

phImage.Controls.Add(Literal2);

}

</script>

<asp:PlaceHolder runat="server" ID="phImage"></asp:PlaceHolder>

的确是个很简单很小的功能,还修改了数据库结构,在表blog_Config里面

添加PageVisitCount字段,使用的时候,需要修改PageTemplate.ascx文件,在里面添加

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

合适的位置添加

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

另外得自己找好看的图片

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有