ASP.Net控件客户端ID

今天帮人解决了一个问题,大致原因是对方服务器ASP.Net控件产生的客户端ID与我的服务器产生的不同,导致JS执行和Request提交接收数据有误
如我的是DataGrid1:_ctl3:tid,而对方的却是DataGrid1$ctl03$tid,代码是同样的
虽然我强行修改了DLL帮人解决了这个问题,但仍然觉得有必要去深究
根据MSDN的记载:
Control.ClientID 属性(获取由 ASP.NET 生成的服务器控件标识符。)
除了用来分隔 ID 值的是下划线字符而不是 IdSeparator 属性指定的字符以外,为控件生成的 ClientID 值与 UniqueID 值相同。默认情况下,IdSeparator 属性设置为冒号字符 (:)。由于 ClientID 值不包含冒号字符,因此,它可以用于不支持包含冒号的 ID 的 ECMAScript。
Control.UniqueID 属性(获取服务器控件的唯一的、以分层形式限定的标识符。)
分隔符字符。默认为“$”。
对比一下今天遇到的情况,发现同样的代码,由服务器端发往客户端的ID取值,我的是ClientID,而他的却是UniqueID
印象中大学时的课本、机房的实验,得出的ID都是以“$”分隔的,但我现在的实际情况和MSDN的记载却是以“:”分隔的
为什么会有这样的区别?ClientID的取值与服务器的设置、.Net的版本号之间又要什么关系(我的系统和环境一直都是保持最新的)?如果改变IdSeparator的值?自定义控件时如果定义ClientID的生成规则?
这些好像在我借给别人的黑皮书中有说明
先把问题记录下来,等别人还我书后再去寻找这些解答
.Net Framework Changelog这个也应该看一下(忽然想起来的)

用AJAX优化DVBBS 8.0首页调用

动网的首页调用是方便,但如果调用过多的话首页加载会很慢,所以考虑使用AJAX异步调用来优化下

我的详细做法如下:

1、找到Dv_News.asp中的

Sub OutPut(Strings)
  Response.Write "document.write('"
  Response.Write Strings
  Response.Write "');"
  Response.Write vbNewline
End Sub 

将它改为

Sub OutPut(Strings)
 Response.Charset="gb2312"
 Response.Write Strings
End Sub

并另存为Dv_News1.asp

2、创建一个ajax.js文件,内容如下:

[code:js]

var spinner = "<img src='/images/spinner.gif' alt='正在加载' />";

///
/// Return a XMLHTTPRequest in a browser independent fashion.
///
function GetXMLHttp()
{
    var xmlhttp=false;
   
    try
    {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
        try
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
            xmlhttp = false;
        }
    }

    // Mozilla then?
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
       xmlhttp = new XMLHttpRequest();
    }
   
    return xmlhttp;
}

[/code]

3、将

<script type="text/javascript" src="js/ajax.js"></script>

标签添加到首页<head></head>处

4、将原来的首页调用

<script src="Dv_News.asp?GetName=defnewpic"></script>

替换为

<div id="indexs_defnewpic"></div>

(注意它们的ID)

5、创建ajax_get.js文件内容如下:

[code:js]

function getSEIndex(se)
{
    var xmlhttp = GetXMLHttp();
    var div = document.getElementById("indexs_" + se);

    div.innerHTML = spinner + "正在加载信息...";

    xmlhttp.open("GET", "/Dv_News1.asp?GetName=" + se, true);
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4)
        {
            div.innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null)
}

function NewsShow()
{
 getSEIndex('defnewpic');
 //按需要继续添加
}

NewsShow(); 

[/code]

另:如果你需要每隔一段时间更新一个首页可以在末尾添加上这一句

setInterval("NewsShow()",60000);

6、将

<script type="text/javascript" src="js/ajax_get.js"></script>

标签添加到首页</body>标签的前面

这样优化就弄好了,优化成果请参考:http://www.redguan.com/

相关讨论请移步到:http://bbs.lishewen.com.cn/showforum-14.aspx

谷歌浏览器飞一般的JS执行速度

谷歌今早公布了自己的浏览器Chrome,该浏览器保持了Google一贯简洁的作风,并号称使用了JavaScript V8 引擎,可以通过多线程的虚拟机可以加速Javascript的执行,到底有多快一试便知

这次测试使用的是Javascript performance test(http://wd-testnet.world-direct.at/mozilla/dhtml/funo/jsTimeTest.htm)对各种基本运算进行一百万次的计算,下面是IE7和Chrome的测试结果

 

由上面看出,谷歌浏览器有20倍于IE的JS执行速度,前景非常乐观,微软如果再不在性能方面加强就有危险了

什么是肩客?打字日赚是骗人的吗?——请小心骗子网站

     肩客就是通过互联网把自己的智慧、知识、能力、经验转换成实际收益的人。按肩客网自己的说明看起来又象是威客,至少目前还没有出现真正能赚钱的肩客网站。“肩客”只是骗子想另立门户,乱搞出来的名字。

      肩客平台-为肩客提供网络工作任务、教学、交流、结算一体化的工作平台。正规的肩客平台应当是和威客平台一样,作为第三方,起第三方的保障作用,不直接参与发布任务或完成任务。任何一家肩客平台或是威客平台,是由自己发布任务的都是骗子网站。大家要看清威客平台的角色,此角色就和支付宝一样,不参与网上产品销售,而是作为第三方,为商家和消费者提供信用保障,如果离开了第三方的信用保障体系,那么所有的交易都有可能是骗人的。

      最近出现的肩客网都是由不久前的威客明星骗子网站演变而来,骗子只是换了包装,改头换脸,而重操旧业,实际上威客明星和肩客网骗人的本质是一样的。

      目前出现的一家肩客网和一家威客明星已经被确认为骗子网站,加入需要交钱,实际上他们没有起第三方的信用保障,而是直接发布任务骗人,和真正的威客平台是有本质区别的。

      现在国内还没有任何一家真正意义上的肩客网站,现有的肩客网全是骗子,欺骗会员加入时全按以下要求:

要求1、肩客工作平台软件下载 下载 如何下载,要求下载的软件带有木马,会感染QQ或是盗其它的账号,以便骗子网站恶意传播骗子信息。
要求2、免费下载飞信,为什么指定要求下载飞信呢?因为骗子骗人下戴飞信后,骗子就可以获得佣金了,实际上肩客网并没有兼职任务可做,有的也只是欺骗会员们为骗子站点作宣传!
要求3、免费申请139邮箱,指定要求注册139邮箱也是为了获取佣金,实际上肩客网并没有兼职任务可做。

要求4、要求留下手机号,并回复短信开通指定业务,也是为了获取佣金提成,实际上肩客网并没有兼职任务可做。

      目前绝大多数网络兼职、打字日赚的网站皆是骗子网站。

      凡是加入就要交钱的肩客网都是骗子,大家要小心,千万不要浪费钱加入!就算不交钱也是要求你加入这注册那的。另外凡是没有正规备案号的网站都要小心,因为骗子害怕暴露身份,不敢备案。加入就要下载不明软件的,都要小心中木马。

看到不少人中招,在QQ乱发垃圾信息,特意撰写此文,欢迎转载

Windows Scripting 范例 学习手册 杂志 免费下载

TechNet 中心佛心来的 多年 Windows Scripting 范例 学习手册 杂志 一口气大赠送

不论你是 Developer 或是 IT Pro 一定都要下载来拜

Over 160 articles from the TechNet Script Center collected in a single .CHM file.

Collection of Sesame Script columns published in the TechNet Script Center.

The first three years of the Hey, Scripting Guy! column, gathered in one fully-searchable archive.

批量结束进程的方法

有些时候,我们会中一种病毒,它会在操作系统能同时开3、4个进程,当你在任务管理器中结束其中之一的时候,另外那几个又会把你结束的进程打开,这时我们就是要用批量去同时结束这些进程。
其中方法有两种:

1、使用TaskKill命令
首先,我们先打开任务管理器,记下我们要结束进程的Pid值
如: 1230  1241  1253
然后,切换到命令提示符,输入
taskkill /pid 1230 /pid 1241 /pid 1253
就可以达到目的了
TaskKill命令的具体语法请参考这里

2、使用批处理程序
同样我们先要记下要结束进程的Pid值
用记事本新建一个文本文档
输入:
@echo off
ntsd -c q -p 3516
ntsd -c q -p 2924

注:3516 2924为PID值,每添加一行ntsd -c q -p 2924就结束一个进程

编辑完成后,保存并重命名为a.bat,运行  

VS2005 IDE的小技巧

很多朋友,特别是初学者,都很难记住语法格式,或者是不懂类如何调用,或者不懂书写某些功能的代码块(如:连接数据库),在VS2005以前,我们通常做法是查帮助、Ctrl+J、上BBS问大虾,现在VS2005的IDE又提供了一种帮助您解决问题的途径,大家试一下按下Ctrl+K放开后再按下Ctrl+X,这样就可以呼出VS2005的插入代码片段功能,里面已经内置近400种不同功能的代码片段,里面有常规语法块,数据库操作,Windows系统功能相关,异常处理,数学函数块等等,很多常用的都有了,选择好代码片段回车后,再把绿色的小框框填了,就行了。如果这些都还不能满足您的要求的,您可以通过按下Ctrl+K->Ctrl+B来加入自定义的代码块。(此技巧同样适用于速成版)

xp安装了SP3以后无法更新的解决办法

这个解决方法就是在 Windows 中注册 Wups2.dll 文件

要在 Windows 中注册 Wups2.dll 文件,请按照下列步骤操作:
1. 停止自动更新服务。为此,请按照下列步骤操作:
a. 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
b. 在命令提示符处,键入以下命令并按 Enter: net stop wuauserv

2. 注册 Wups2.dll 文件。为此,请按照下列步骤操作:
a. 在命令提示符处,键入以下命令并按 Enter: regsvr32 %windir%\system32\wups2.dll
注意:对于运行 Windows XP Professional x64 Edition 的计算机,
请输入以下命令,然后按 Enter: regsvr32 %windir%\syswow64\wups2.dll
b. 在收到的每条验证消息上单击“确定”

3. 启动自动更新服务。
为此,请在命令提示符处键入以下命令,然后按 Enter: net start wuauserv

VB2010新特性之隐式续行符

VB的语句是写成一行一行的,无需分号隔离。一般情况下语句只能写成一行,不能换行。而从VB5.0开始,如果觉得语句写成一行太长,可以加入续行符来换行。如:

    Function LSW(ByVal x As Integer, _                   ByVal y As String, _                   ByVal z As Double) As Integer      End Function

这样的代码显然不够美观,并且由于Linq语法的出现,代码换行的需求就更多了

    Public Function FindUpcomingDinners() As IQueryable(Of Dinner)          Return From d In db.Dinners _                 Where d.EventDate > Now _                 Order By d.EventDate _                 Select d      End Function

于是VB2010改进了语法,引入了隐式换行符的概念。当VB能够判断一行语法未完的上下文,就会自动将紧接的一行视为续行,而无需显示加入续行符。这样一来在常见的场合,你就可以任意换行,VB因此变得更自由了

    Function LSW(ByVal x As Integer,                    ByVal y As String,                    ByVal z As Double) As Integer      End Function        Public Function FindUpcomingDinners() As IQueryable(Of Dinner)          Return From d In db.Dinners                 Where d.EventDate > Now                 Order By d.EventDate                 Select d      End Function

代码也变好看多了

如果你还在用VB2005或更旧版本的朋友看上面的代码时可能会好奇,为什么SQL的语句能写VB里面

答:这是VB2008时新增的一套语法,名叫Linq,可以去Google一下,或者等我的其他文章