我这半个月的代码总结(小技巧,小代码)之二

一:ASP。NET AJAX 注册JS方法
    如果想在。NET AJAX  下使用自定义JS方法 那么。NET AJAX是不支持普通定义方法的,可以通过注册SCRIPTMANAGER来构造
ScriptManager.RegisterStartupScript 方法
ScriptManager.RegisterStartupScript(this.UpdatePanel4, this.GetType(), "updateScript", "alert('发表成功')", true);
this.UpdatePanel4  是引用或者内部要触发JS的UpdatePanel(也可以是其他对象)
 this.GetType()       出发者的类型(这里直接写 this.GetType()就可以)
 "updateScript"    随意写个有代表性的JS标识就OK,跟函数名一样
 "alert('发表成功')"  函数体(JS)
true  代表 确实要追加显示JS(在页面浏览器观看源代码可以看到)

另外PAGE的RegisterStartupScript  也可以全局添加JS代码
二:
ScriptManager.RegisterScriptBlock  方法类似于上面函数,但是他相当于Attribute方法 只在加入后第二次事件才激发


三:将本页设置为收藏或者某站点加入浏览器收藏的代码(非原创)

 <a style="cursor:hand" onClick="window.external.addFavorite(top.location.href,'加在收藏夹中的页面名称)">将本页加入收藏夹</a>

将某个网站加入设为首页的JS
<span onclick="var strHref=window.location.href;this.style.behavior='url fault#homepage)';this.setHomePage('http://www.sitehome.cn');" style="CURSOR: hand">设为首页</span> 



四:如果数据库中有这样的字段   结果:2313,3213132,3123123,31231231
      你想知道实际上字段内容中 排除所有“,”号后的长度 SQL写法为 Select Len(A)-Len(Replace(A,'i','')) From tableName   (这里把i换成“,”就可以了)

五: 用户表内有积分列Digg_Jf  你想对他们的结果进行排名的话请看下面代码
select   rowid=identity(int,1,1),User_ID   into   #aaa   from   Digg_Users   order   by   Digg_Jf   desc     select   rowid   from   #aaa   where   User_ID   =   传入的用户名     drop   table   #aaa

原因:rowid=identity(int,1,1),  代表 初始为1 自动每行增长1点 给rowid 并且追加到aaa(临时表) 然后从这个表搜索结果(自己去试试就知道了)

六:匿名用户在表里 临时记录User_ID为0,还有个记录他IP 
  要求 如果搜索是匿名用户的话 User_NickName列 结果为 酷体网友(197。223。323。*)  ---这里的IP是匿名用户IP最后为是*
下面语句可以解决


select  A.User_ID,A.nRemark_Content,A.nRemark_AddTime,A.User_IP,B.Digg_Header,User_NickName=case  when A.User_ID=0 then '酷体网友('+reverse(substring(reverse(A.User_IP),charindex('.',reverse(A.User_IP)),100))+'*)' else B.User_NickName end from News_Remark  A left outer join Digg_Users B on A.User_ID=B.User_ID where A.News_ID='1' and A.nRemark_State=0 



解释:User_NickName=case  when A.User_ID=0 then '酷体网友('+reverse(substring(reverse(A.User_IP),charindex('.',reverse(A.User_IP)),100))+'*)' else B.User_NickName end

的意思是(CASE语句用法): 如果A。User_ID 是0的话 那么User_NickName列返回 酷体网友 +IP(带*)  ELSE(否则)正常返回
 
而我写的reverse(substring(reverse(A.User_IP),charindex('.',reverse(A.User_IP)),100))+'*)'   就是先把IP倒过来(reverse)然后(charindex)取倒IP

最后的  点(。)的位置然后用substring 取倒IP,从索引位置一取  取100长度(没那么长也不影响)  然后在把结果倒过来

比如 192.168.1.1  就变成了 192。168。1。*
  最后:为什么我非要倒过来取?因为SQL 目前还没 ASP。NET  的 lastindexof 方法功能
posted @ 2007-09-14 22:35  搞IT的狐狸  阅读(501)  评论(0编辑  收藏  举报