最近做了个新闻系统,新闻都是生成静态页面的,在新闻中心页面通过读数据库里的标题和链接来生成新闻列表,用的是datalist:
<asp:datalist id=DataList2 runat="server">
<ItemTemplate>
<a id="<%# DataBinder.Eval(Container.DataItem, "nid") %> " οnclick="abc(this);" href="<%# DataBinder.Eval(Container.DataItem, "filename") %>" target="_blank"><font color="#0000ff" class=STYLE1>·<%# DataBinder.Eval(Container.DataItem, "biaoti") %></font></a></ItemTemplate>
</asp:datalist>
老板说要统计新闻点击数,静态的不能加代码啊,在新闻中心页面上我用的都是html的链接形式<a></a>
开始加上linkbutton,用Response.Redirect,但是打开新窗口的时候新闻中心页面也关了
用Response.Write("<script language=/"javascript/">window.open(/"/");</script>");的时候新闻中心页面又自动
重
新加载一次,效果很不好。
故想到了ajax
注意这一行红字
<a id="<%# DataBinder.Eval(Container.DataItem, "nid") %> " οnclick="abc(this);" href="<%# DataBinder.Eval(Container.DataItem, "filename") %>" target="_blank"><font color="#0000ff" class=STYLE1>·<%# DataBinder.Eval(Container.DataItem, "biaoti") %></font></a>
我把id设为新闻的nid值,这里的我开始是id=<%# DataBinder.Eval(Container.DataItem, "nid") %>
没有加引号,把我给调试得苦死了,人都要疯了,html还是不行。
οnclick="abc(this);"
js代码如下:很简单的
<script language=javascript>
function abc(e)
{
SFAjaxMethod.hitacc(e.id);
}
</script>
最后就是ajax后台方法了:
//统计点击数
[Ajax.AjaxMethod()]
public void hitacc(string nid)
{
int dnid=Convert.ToInt32(nid);
SqlCommand SqlCmd = new SqlCommand();
SqlCmd.Connection = new SqlConnection(ConfigurationSettings.AppSettings["ConnString"]);
SqlCmd.CommandText = "update news set hit=hit+1 where nid="+dnid;
SqlCmd.CommandType = CommandType.Text;
SqlCmd.Connection.Open();
SqlCmd.ExecuteNonQuery();
SqlCmd.Connection.Close();
}
//统计点击数