<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>浪人ㄨ黑白</title>
<link>http://or2.com.cn</link>
<Description>浪人ㄨ黑白</Description>
<language>zh-cn</language>
<copyright>Copyright 2008-2009 浪人</copyright>
<webMaster>romanboys@163.com</webMaster>
<image>
	<title>浪人ㄨ黑白</title> 
	<url>http://or2.com.cn/or2_images/logo.gif</url> 
	<link>http://or2.com.cn</link> 
	<description>浪人ㄨ黑白</description> 
</image>
<item><link>http://or2.com.cn/blogview.asp?logID=1069</link><title><![CDATA[关于&nbsp;GetResponse&nbsp;引起&nbsp;asp.net(500)&nbsp;内部服务器错误的解决方法]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2010-01-10 10:29 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1069</guid><description><![CDATA[这个问题要是不注意那可真是相当的不得了，<br><br>如果一时检查不出來,可以试试向该页头添加&nbsp;ValidateRequest&nbsp;=&quot;false&quot;,<br><br>&lt;%@&nbsp;Page&nbsp;Language=&quot;C#&quot;&nbsp;AutoEventWireup=&quot;true&quot;&nbsp;&nbsp;ValidateRequest&nbsp;=&quot;false&quot;&nbsp;%&gt;<br><br>不过这样也是治标不治本，具体的最好了解一下为什么有ValidateRequest这个设置，<br>主要也是为了安全考虑。<br><br><br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1068</link><title><![CDATA[分页打印代码，只支持IE]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-12-31 01:14 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1068</guid><description><![CDATA[&lt;html&gt;<br>&lt;title&gt;JS&nbsp;分页批量打印解决方案(只支持IE)&lt;/title&gt;<br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;function&nbsp;printWithAlert()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;document.all.WebBrowser.ExecWB(6,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;function&nbsp;printWithoutAlert()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;document.all.WebBrowser.ExecWB(6,6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;function&nbsp;printSetup()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;document.all.WebBrowser.ExecWB(8,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;function&nbsp;printPrieview()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;document.all.WebBrowser.ExecWB(7,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>function&nbsp;printImmediately()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>document.all.WebBrowser.ExecWB(6,6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;window.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&lt;/script&gt;<br>&lt;OBJECT&nbsp;&nbsp;id=WebBrowser&nbsp;&nbsp;classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&nbsp;style=&quot;display:none&quot;&gt;<br>&lt;/OBJECT&gt;<br>&lt;/noscript&gt;<br>&lt;style&nbsp;media=print&gt;&nbsp;&nbsp;<br>.Noprint{display:none;}&nbsp;&nbsp;.PageNext{page-break-after:&nbsp;always;}&nbsp;&nbsp;<br>&lt;/style&gt;<br>&lt;table&nbsp;align=&quot;center&quot;&nbsp;class=NOPRINT&gt;<br>&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;align=&quot;center&quot;&gt;&lt;BUTTON&nbsp;title=打印&nbsp;onclick=printWithAlert()&gt;打印&lt;/BUTTON&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BUTTON&nbsp;title=直接打印&nbsp;onclick=printWithoutAlert()&gt;直接打印&lt;/BUTTON&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=button&nbsp;value=&quot;打印设置&quot;&nbsp;onClick=&quot;printSetup()&quot;&nbsp;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button&nbsp;onclick&nbsp;=&#39;printPrieview()&#39;&nbsp;title=&#39;打印预览...&#39;&nbsp;&gt;打印预览&lt;/button&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;div&nbsp;&nbsp;class=NOPRINT&gt;&nbsp;以下为打印区:&lt;br&gt;<br>&lt;/div&gt;<br>&lt;hr&nbsp;size=1&nbsp;noshadow&nbsp;color=black&nbsp;&nbsp;class=NOPRINT&nbsp;&gt;<br>&lt;table&nbsp;class=&quot;PageNext&quot;&nbsp;&gt;<br>&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;colspan=2&gt;第一页数据&lt;/td&gt;<br>&nbsp;&nbsp;&lt;/tr&gt;<br>&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;用户名&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;地址&lt;/td&gt;<br>&nbsp;&nbsp;&lt;/tr&gt;<br>&nbsp;&nbsp;&lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;张三&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;北京&lt;/td&gt;<br>&nbsp;&nbsp;&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;hr&nbsp;size=1&nbsp;noshadow&nbsp;color=black&nbsp;&nbsp;class=NOPRINT&nbsp;&gt;<br>&lt;div&nbsp;class=&quot;PageNext&quot;&gt;第二页数据&lt;/div&gt;<br>&lt;hr&nbsp;size=1&nbsp;noshadow&nbsp;color=black&nbsp;&nbsp;class=NOPRINT&nbsp;&gt;<br>第三页数据<br>&lt;/html&gt;<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1067</link><title><![CDATA[待到山花烂漫时]]></title><author><![CDATA[浪人]]></author><category>杂ヤ杂ハ</category><pubDate>2009-12-23 11:42 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1067</guid><description><![CDATA[她在丛中笑...... <img src="or2_images/smilies/icon_smile.gif" border="0" align="absmiddle" />]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1066</link><title><![CDATA[无与伦比的美丽]]></title><author><![CDATA[浪人]]></author><category>生活札记</category><pubDate>2009-11-22 00:39 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1066</guid><description><![CDATA[是的，那是一种怎样的心情！]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1065</link><title><![CDATA[如何处理UpdatePanel中控件Autopostback时的焦点]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-10-08 09:47 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1065</guid><description><![CDATA[假设我们在页面上放置几个TextBox，设置其AutoPostback为True，这样虽然能够处理TextChanged事件，但是最新的焦点失去了，用户需要重新用鼠标或者键盘去指定输入焦点，这样的用户体验很不好。所以，我们需要多写一行代码来重新设置焦点。&nbsp;<br><br>首先我们来解决获取Postback时客户端焦点问题，这是关键。由于这很有普遍性，我写成一个用户控件，使用时只要将用户控件拖入页面即可获得客户端焦点。用户控件的全部内容是：&nbsp;<br>HTML&nbsp;code&nbsp;<br>&lt;%@&nbsp;Control&nbsp;Language=&quot;C#&quot;&nbsp;%&gt;<br><br>&lt;script&nbsp;runat=&quot;server&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;Page_PreRender(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!IsPostBack)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sc&nbsp;=&nbsp;this.Page.Form.Attributes[&quot;onsubmit&quot;];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sc&nbsp;==&nbsp;null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sc&nbsp;=&nbsp;&quot;return&nbsp;true;&quot;;&nbsp;//给HTML的FROM标签添加onsubmit事件，这个事件是在按钮事件触发时发送的。用来保存当前鼠标焦点的控件ID，在这里就是BUTTON的ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Page.Form.Attributes[&quot;onsubmit&quot;]&nbsp;=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string.Format(&quot;document.getElementById(&#39;{0}&#39;).value=document.activeElement.id;&quot;,&nbsp;this.HiddenField1.ClientID)&nbsp;+&nbsp;sc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;ActiveClientID<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;this.HiddenField1.Value;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&lt;/script&gt;<br><br>&lt;asp:HiddenField&nbsp;ID=&quot;HiddenField1&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br><br><br>这个用户控件内部只有一个HiddenField控件，它在第一次装载时将页面的Form控件的客户端事件onsubmit插入一句脚本，使得当页面回发时（执行theForm.submit()时）首先将当前的焦点(如果有的话)的id记录到这个HiddenField上。可以通过用户控件的属性ActiveClientID查询到这个返回值。&nbsp;<br><br>而在Updapanel内编程时，我们就需要这个ActiveClientID参数来准确地设置焦点，来弥补Updatanel缺少的这项保持焦点的功能。具体示例，可以在网站里贴入下面这个测试页面看看效果：&nbsp;<br>HTML&nbsp;code&nbsp;<br>&lt;%@&nbsp;Page&nbsp;Language=&quot;C#&quot;&nbsp;%&gt;<br><br>&lt;%@&nbsp;Register&nbsp;Src=&quot;ActiveElementID.ascx&quot;&nbsp;TagName=&quot;ActiveElementID&quot;&nbsp;TagPrefix=&quot;uc2&quot;&nbsp;%&gt;<br><br>&lt;script&nbsp;runat=&quot;server&quot;&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;TextBox2_TextChanged(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Regex&nbsp;reg&nbsp;=&nbsp;new&nbsp;Regex(&quot;^[1-9]([0-9]{3})$&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(reg.Match(TextBox2.Text).Success)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Message1.Visible&nbsp;=&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ActiveElementID1.ActiveClientID&nbsp;!=&nbsp;string.Empty)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page.SetFocus(ActiveElementID1.ActiveClientID);//把焦点根据保存的BUTTONID设置到BUTTON上<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Message1.Visible&nbsp;=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextBox2.Focus();//设置TEXTBOX的输入焦点<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Message2.Visible&nbsp;=&nbsp;!Message1.Visible;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&lt;/script&gt;<br><br>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&quot;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&quot;&nbsp;&quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&quot;&gt;<br>&lt;html&nbsp;xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot;&gt;<br>&lt;head&nbsp;runat=&quot;server&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;id=&quot;form1&quot;&nbsp;runat=&quot;server&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:ScriptManager&nbsp;ID=&quot;ScriptManager1&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:UpdatePanel&nbsp;ID=&quot;UpdatePanel1&quot;&nbsp;runat=&quot;server&quot;&nbsp;UpdateMode=&quot;Conditional&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ContentTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TextBox&nbsp;ID=&quot;TextBox2&quot;&nbsp;runat=&quot;server&quot;&nbsp;AutoPostBack=&quot;true&quot;&nbsp;OnTextChanged=&quot;TextBox2_TextChanged&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Label&nbsp;runat=&quot;server&quot;&nbsp;ID=&quot;Message1&quot;&nbsp;Visible=&quot;false&quot;&nbsp;Text=&quot;验证失败，只能输入4位数字&quot;&nbsp;SkinID=&quot;Warning&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Label&nbsp;runat=&quot;server&quot;&nbsp;ID=&quot;Message2&quot;&nbsp;Visible=&quot;false&quot;&nbsp;Text=&quot;验证通过&quot;&nbsp;SkinID=&quot;Pass&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TextBox&nbsp;ID=&quot;TextBox3&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TextBox&nbsp;ID=&quot;TextBox4&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TextBox&nbsp;ID=&quot;TextBox5&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ContentTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:UpdatePanel&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Button&nbsp;ID=&quot;Button1&quot;&nbsp;runat=&quot;server&quot;&nbsp;Text=&quot;什么也不做，测试页面回发状态是否正确&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;uc2:ActiveElementID&nbsp;ID=&quot;ActiveElementID1&quot;&nbsp;runat=&quot;server&quot;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br><br>这里使用了一个很简单的功能，假设用户焦点离开TextBox的时候，我们需要首先使用一个很简单的正则来验证用户录入的是否正确。实际上，我们可以在后台编写任意复杂的验证功能，使用数据库甚至远程服务来进行验证，然后将结果实时显示在客户端。这里使用TextBox做演示，实际上稍加分辨你就可以看到这个用户控件的功能对于使用或者不使用UpdataPanel都是可行的，而且可以也可以使用在这里演示的TextBox的AutoPostback判断以外任意控件的回发处理时。。&nbsp;<br><br>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/zhouxing_24/archive/2008/12/31/3666377.aspx" target="_blank">http://blog.csdn.net/zhouxing_24/archive/2008/12/31/3666377.aspx</a>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1064</link><title><![CDATA[Treeview&nbsp;无限分类&nbsp;终极解决方案C#]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-09-04 10:48 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1064</guid><description><![CDATA[后台代码部分:<br><br>using&nbsp;System;<br>using&nbsp;System.Data;<br>using&nbsp;System.Configuration;<br>using&nbsp;System.Web;<br>using&nbsp;System.Web.Security;<br>using&nbsp;System.Web.UI;<br>using&nbsp;System.Web.UI.WebControls;<br>using&nbsp;System.Web.UI.WebControls.WebParts;<br>using&nbsp;System.Web.UI.HtmlControls;<br>using&nbsp;System.IO;<br>using&nbsp;System.Net;<br>using&nbsp;System.Text;<br>using&nbsp;System.Data.SqlClient;<br><br><br>public&nbsp;partial&nbsp;class&nbsp;_Default&nbsp;:&nbsp;System.Web.UI.Page&nbsp;<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;Page_Load(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!IsPostBack)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PopulateNodes(TreeView1.Nodes,&nbsp;0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DataTable&nbsp;GetTreeTable()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataTable&nbsp;dt&nbsp;=&nbsp;new&nbsp;DataTable();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt&nbsp;=&nbsp;HttpContext.Current.Cache[&quot;Treeview&quot;]&nbsp;as&nbsp;DataTable;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(dt&nbsp;!=&nbsp;null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//此处是数据库连接<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//String&nbsp;ConnStr&nbsp;=&nbsp;LTP.Common.ConfigHelper.GetConfigString(&quot;DNS&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ConnStr&nbsp;=&nbsp;ConfigurationManager.ConnectionStrings[&quot;DNS&quot;].ConnectionString;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection&nbsp;Conn&nbsp;=&nbsp;new&nbsp;SqlConnection(ConnStr);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//String&nbsp;sqlstr&nbsp;=&nbsp;&quot;select&nbsp;*&nbsp;from&nbsp;TreeJi&quot;;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand&nbsp;Com&nbsp;=&nbsp;new&nbsp;SqlCommand();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com.CommandText&nbsp;=&nbsp;&quot;select&nbsp;*&nbsp;from&nbsp;TreeJi&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com.Connection&nbsp;=&nbsp;Conn;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conn.Open();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com.ExecuteNonQuery();<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlDataAdapter&nbsp;sda&nbsp;=&nbsp;new&nbsp;SqlDataAdapter(Com);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt&nbsp;=&nbsp;new&nbsp;DataTable();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sda.Fill(dt);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Cache.Insert(&quot;Treeview&quot;,&nbsp;dt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conn.Close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conn.Dispose();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;PopulateNodes(TreeNodeCollection&nbsp;nodes,&nbsp;Int32&nbsp;intParentID)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataTable&nbsp;dt&nbsp;=&nbsp;new&nbsp;DataTable();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt&nbsp;=&nbsp;this.GetTreeTable();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strExpression&nbsp;=&nbsp;String.Empty;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strExpression&nbsp;=&nbsp;&quot;[parentID]=&quot;&nbsp;+&nbsp;intParentID;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Data.DataRow[]&nbsp;dr;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dr&nbsp;=&nbsp;dt.Select(strExpression);<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(Int32&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;=&nbsp;dr.GetUpperBound(0);&nbsp;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TreeNode&nbsp;tn&nbsp;=&nbsp;new&nbsp;TreeNode();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Dim&nbsp;tn&nbsp;As&nbsp;New&nbsp;TreeNode()<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tn.Text&nbsp;=&nbsp;dr<i>[&quot;TableName&quot;].ToString().Trim();//tn.Text&nbsp;=&nbsp;foundRows(I).Item(“TableName”).ToString()<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tn.Value&nbsp;=&nbsp;dr<i>[&quot;ID&quot;].ToString();&nbsp;&nbsp;//tn.Value&nbsp;=&nbsp;foundRows(I).Item(&quot;ID&quot;).ToString()<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataRow[]&nbsp;dr1;&nbsp;&nbsp;//Dim&nbsp;dr()&nbsp;As&nbsp;DataRow<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dr1&nbsp;=&nbsp;dt.Select(&quot;[parentID]=&quot;&nbsp;+&nbsp;tn.Value);&nbsp;&nbsp;//dr&nbsp;=&nbsp;dt.Select(&quot;[parentID]&nbsp;=&nbsp;&quot;&nbsp;&amp;&nbsp;tn.Value)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(dr1.GetUpperBound(0)&nbsp;&gt;&nbsp;-1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tn.PopulateOnDemand&nbsp;=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}//If&nbsp;dr.GetUpperBound(0)&nbsp;&gt;&nbsp;-1&nbsp;Then<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;tn.PopulateOnDemand&nbsp;=&nbsp;True<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//End&nbsp;If<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes.Add(tn);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TreeView1.DataSource&nbsp;=&nbsp;dt.DefaultView;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TreeView1.DataBind();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;TreeView1_TreeNodePopulate(object&nbsp;sender,&nbsp;TreeNodeEventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PopulateNodes(e.Node.ChildNodes,&nbsp;Int32.Parse(e.Node.Value));<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br><br>前台页面部分:<br><br>&lt;%@&nbsp;Page&nbsp;Language=&quot;C#&quot;&nbsp;AutoEventWireup=&quot;true&quot;&nbsp;&nbsp;CodeFile=&quot;Default.aspx.cs&quot;&nbsp;Inherits=&quot;_Default&quot;&nbsp;%&gt;<br><br>&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&quot;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&quot;&nbsp;&quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&quot;&gt;<br><br>&lt;html&nbsp;xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot;&nbsp;&gt;<br>&lt;head&nbsp;runat=&quot;server&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;无标题页&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;id=&quot;form1&quot;&nbsp;runat=&quot;server&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TreeView&nbsp;ID=&quot;TreeView1&quot;&nbsp;runat=&quot;server&quot;&nbsp;OnTreeNodePopulate=&quot;TreeView1_TreeNodePopulate&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:TreeView&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br><br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1063</link><title><![CDATA[正则表达式大全]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-09-03 00:56 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1063</guid><description><![CDATA[&quot;^\d+$&quot;&nbsp;//非负整数（正整数&nbsp;+&nbsp;0）&nbsp;<br>&quot;^[0-9]*[1-9][0-9]*$&quot;&nbsp;//正整数&nbsp;<br>&quot;^((-\d+)|(0+))$&quot;&nbsp;//非正整数（负整数&nbsp;+&nbsp;0）&nbsp;<br>&quot;^-[0-9]*[1-9][0-9]*$&quot;&nbsp;//负整数&nbsp;<br>&quot;^-?\d+$&quot;&nbsp;//整数&nbsp;<br>&quot;^\d+(\.\d+)?$&quot;&nbsp;//非负浮点数（正浮点数&nbsp;+&nbsp;0）&nbsp;<br>&quot;^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$&quot;&nbsp;//正浮点数&nbsp;<br>&quot;^((-\d+(\.\d+)?)|(0+(\.0+)?))$&quot;&nbsp;//非正浮点数（负浮点数&nbsp;+&nbsp;0）&nbsp;<br>&quot;^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$&quot;&nbsp;//负浮点数&nbsp;<br>&quot;^(-?\d+)(\.\d+)?$&quot;&nbsp;//浮点数&nbsp;<br>&quot;^[A-Za-z]+$&quot;&nbsp;//由26个英文字母组成的字符串&nbsp;<br>&quot;^[A-Z]+$&quot;&nbsp;//由26个英文字母的大写组成的字符串&nbsp;<br>&quot;^[a-z]+$&quot;&nbsp;//由26个英文字母的小写组成的字符串&nbsp;<br>&quot;^[A-Za-z0-9]+$&quot;&nbsp;//由数字和26个英文字母组成的字符串&nbsp;<br>&quot;^\w+$&quot;&nbsp;//由数字、26个英文字母或者下划线组成的字符串&nbsp;<br>&quot;^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$&quot;&nbsp;//email地址&nbsp;<br>&quot;^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$&quot;&nbsp;//url&nbsp;<br>/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/&nbsp;//&nbsp;年-月-日&nbsp;<br>/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/&nbsp;//&nbsp;月/日/年&nbsp;<br>&quot;^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$&quot;&nbsp;//Emil&nbsp;<br>&quot;(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?&quot;&nbsp;//电话号码&nbsp;<br>&quot;^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$&quot;&nbsp;//IP地址&nbsp;<br><br>YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了&nbsp;<br>^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$&nbsp;<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1062</link><title><![CDATA[“不能启用此约束,因为不是所有的值都具有相应的父值”的解决方法]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-08-30 11:17 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1062</guid><description><![CDATA[也许你们在做ASP.NE程序时，做dataset主从表嵌套时，如果进行主表筛选时会出现<br>不能启用此约束,因为不是所有的值都具有相应的父值<br><br>首先要明白这句话的意思先，这句话的意民是，子表的数据不是每一个值在主表中都有相联系的值。<br>通常我们做dataset两个表的嵌套时，会使用一个ID把两个表关联起来，写法如下<br>DataRelation&nbsp;datasetRelation=ds.Relations.Add(&quot;myrela&quot;,&nbsp;ds.Tables[0].Columns[&quot;CaseID&quot;],&nbsp;ds.Tables[1].Columns[&quot;CaseID&quot;]);<br><br>正常情况下不作主表筛选时，可以很正常的显示，如果对主表删除数据，OR主表筛选时，比方说把主表中日期为<br>2007-03-27进行筛选时，那就会出现&nbsp;不能启用此约束,因为不是所有的值都具有相应的父值的错误<br><br>因为子表中的ID表比主表中的ID值多，所以就会出现这样的错误<br><br>解决方法很简单<br><br>DataRelation&nbsp;datasetRelation=ds.Relations.Add(&quot;myrela&quot;,&nbsp;ds.Tables[0].Columns[&quot;CaseID&quot;],&nbsp;ds.Tables[1].Columns[&quot;CaseID&quot;],false);<br><br>加个false就行了<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1061</link><title><![CDATA[sys.debug&nbsp;为空或不是对象的解决办法]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-08-29 09:12 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1061</guid><description><![CDATA[<br>1:&nbsp;删除路径下的:&nbsp;X:\Program&nbsp;Files\Microsoft&nbsp;ASP.NET\ASP.NET&nbsp;2.0&nbsp;AJAX&nbsp;Extensions\v1.0.61025\MicrosoftAjaxLibrary\System.Web.Extensions\1.0.61025.0&nbsp;下的Debug&nbsp;和release文件夹.<br><br>2:uninstall&nbsp;Ajax&nbsp;的安装包和Toolkit包,<br><br>3:&nbsp;再装ajax&nbsp;和toolkit包,<br><br><br>重启IIS,或重启服务器,问题解决.<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1060</link><title><![CDATA[VS2005&nbsp;快捷键大全]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-08-25 05:18 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1060</guid><description><![CDATA[快捷键&nbsp;功能<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;B生成解决方案<br>CTRL&nbsp;+&nbsp;F7&nbsp;生成编译<br>CTRL&nbsp;+&nbsp;O&nbsp;打开文件<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;O打开项目<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;C显示类视图窗口<br>F4&nbsp;显示属性窗口<br>SHIFT&nbsp;+&nbsp;F4显示项目属性窗口<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;E显示资源视图<br>F12&nbsp;转到定义<br>CTRL&nbsp;+&nbsp;F12转到声明<br>CTRL&nbsp;+&nbsp;ALT&nbsp;+&nbsp;J对象浏览<br>CTRL&nbsp;+&nbsp;ALT&nbsp;+&nbsp;F1帮助目录<br>CTRL&nbsp;+&nbsp;F1&nbsp;动态帮助&nbsp;<br>F1&nbsp;帮助<br>SHIFT&nbsp;+&nbsp;F1当前窗口帮助<br>CTRL&nbsp;+&nbsp;ALT&nbsp;+&nbsp;F3帮助-搜索<br>SHIFT&nbsp;+&nbsp;ALT&nbsp;+&nbsp;ENTER全屏显示<br>CTRL&nbsp;+&nbsp;-向后定位<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;-向前定位<br>CTRL&nbsp;+&nbsp;F4关闭文档窗口<br>CTRL&nbsp;+&nbsp;PAGE&nbsp;DOWN光标定位到窗口上方<br>CTRL&nbsp;+&nbsp;PAGE&nbsp;UP光标定位到窗口下方<br>CTRL&nbsp;+&nbsp;F6<br>CTRL&nbsp;+&nbsp;TAB下一个文档窗口<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;F6<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;TAB上一个文档窗口<br>ALT&nbsp;+&nbsp;F6下一个面板窗口<br>CTRL&nbsp;+&nbsp;K,&nbsp;CTRL&nbsp;+&nbsp;L取消remark<br>CTRL&nbsp;+&nbsp;K,&nbsp;CTRL&nbsp;+&nbsp;C注释选择的代码<br>CTRL&nbsp;+&nbsp;K,&nbsp;CTRL&nbsp;+&nbsp;U取消对选择代码的注释<br>CTRL&nbsp;+&nbsp;M,&nbsp;CTRL&nbsp;+&nbsp;O折叠代码定义<br>CTRL&nbsp;+&nbsp;M,&nbsp;CTRL&nbsp;+&nbsp;L展开代码定义<br>CTRL&nbsp;+&nbsp;DELETE删除至词尾<br>CTRL&nbsp;+&nbsp;BACKSPACE删除至词头<br>SHIFT&nbsp;+&nbsp;TAB取消制表符<br>CTRL&nbsp;+&nbsp;U转小写<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;U转大写<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;END选择至文档末尾<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;HOME选择至文档末尾开始<br>SHIFT&nbsp;+&nbsp;END选择至行尾<br>SHIFT&nbsp;+&nbsp;HOME选择至行开始处<br>SHIFT&nbsp;+&nbsp;ALT&nbsp;+&nbsp;END垂直选择到最后尾<br>SHIFT&nbsp;+&nbsp;ALT&nbsp;+&nbsp;HOME垂直选择到最前面<br>CTRL&nbsp;+&nbsp;A全选<br>CTRL&nbsp;+&nbsp;W选择当前单词<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;PAGE&nbsp;UP选择至本页前面<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;PAGE&nbsp;DOWN选择至本页后面<br>CTRL&nbsp;+&nbsp;END文档定位到最后<br>CTRL&nbsp;+&nbsp;HOME文档定位到最前<br>CTRL&nbsp;+&nbsp;G转到…<br>CTRL&nbsp;+&nbsp;K,&nbsp;CTRL&nbsp;+&nbsp;P上一个标签<br>CTRL&nbsp;+&nbsp;K,&nbsp;CTRL&nbsp;+&nbsp;N下一个标签<br>ALT&nbsp;+&nbsp;F10调试-ApplyCodeChanges&nbsp;<br>CTRL&nbsp;+&nbsp;ALT+&nbsp;Break停止调试<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;F9&nbsp;取消所有断点<br>CTRL&nbsp;+&nbsp;F9允许中断<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;F5调试-重新开始<br>F5运行调试<br>CTRL&nbsp;+&nbsp;F5运行不调试<br>F10跨过程序执行<br>F11单步逐句执行<br>CTRL&nbsp;+&nbsp;J列出成员&nbsp;<br>CTRL&nbsp;+&nbsp;PAGE&nbsp;DOWN下一个视图<br>CTRL&nbsp;+&nbsp;B格式-粗体<br>CTRL&nbsp;+&nbsp;SHIFT&nbsp;+&nbsp;T格式-文字缩进&nbsp;<br>调试快捷键<br>F6:&nbsp;生成解决方案<br>Ctrl+F6:&nbsp;生成当前项目<br>F7:&nbsp;查看代码<br>Shift+F7:&nbsp;查看窗体设计器<br>F5:&nbsp;启动调试<br>Ctrl+F5:&nbsp;开始执行(不调试)<br>Shift+F5:&nbsp;停止调试<br>Ctrl+Shift+F5:&nbsp;重启调试<br>F9:&nbsp;切换断点<br>Ctrl+F9:&nbsp;启用/停止断点<br>Ctrl+Shift+F9:&nbsp;删除全部断点<br>F10:&nbsp;逐过程<br>Ctrl+F10:&nbsp;运行到光标处<br>F11:&nbsp;逐语句<br>编辑快捷键<br>Shift+Alt+Enter:&nbsp;切换全屏编辑<br>Ctrl+B,T&nbsp;/&nbsp;Ctrl+K,K:&nbsp;切换书签开关<br>Ctrl+B,N&nbsp;/&nbsp;Ctrl+K,N:&nbsp;移动到下一书签<br>Ctrl+B,P:&nbsp;移动到上一书签<br>Ctrl+B,C:&nbsp;清除全部标签<br>Ctrl+I:&nbsp;渐进式搜索<br>Ctrl+Shift+I:&nbsp;反向渐进式搜索<br>Ctrl+F:&nbsp;查找<br>Ctrl+Shift+F:&nbsp;在文件中查找<br>F3:&nbsp;查找下一个<br>Shift+F3:&nbsp;查找上一个<br>Ctrl+H:&nbsp;替换<br>Ctrl+Shift+H:&nbsp;在文件中替换<br>Alt+F12:&nbsp;查找符号(列出所有查找结果)<br>Ctrl+Shift+V:&nbsp;剪贴板循环<br>Ctrl+左右箭头键:&nbsp;一次可以移动一个单词<br>Ctrl+上下箭头键:&nbsp;滚动代码屏幕，但不移动光标位置。<br>Ctrl+Shift+L:&nbsp;删除当前行<br>Ctrl+M,M:&nbsp;隐藏或展开当前嵌套的折叠状态<br>Ctrl+M,L:&nbsp;将所有过程设置为相同的隐藏或展开状态<br>Ctrl+M,P:&nbsp;停止大纲显示<br>Ctrl+E,S:&nbsp;查看空白<br>Ctrl+E,W:&nbsp;自动换行<br>Ctrl+G:&nbsp;转到指定行<br>Shift+Alt+箭头键:&nbsp;选择矩形文本<br>Alt+鼠标左按钮:&nbsp;选择矩形文本<br>Ctrl+Shift+U:&nbsp;全部变为大写<br>Ctrl+U:&nbsp;全部变为小写<br>代码快捷键<br>Ctrl+J&nbsp;/&nbsp;Ctrl+K,L:&nbsp;列出成员<br>Ctrl+Shift+空格键&nbsp;/&nbsp;Ctrl+K,P:&nbsp;参数信息<br>Ctrl+K,I:&nbsp;快速信息<br>Ctrl+E,C&nbsp;/&nbsp;Ctrl+K,C:&nbsp;注释选定内容<br>Ctrl+E,U&nbsp;/&nbsp;Ctrl+K,U:&nbsp;取消选定注释内容<br>Ctrl+K,M:&nbsp;生成方法存根<br>Ctrl+K,X:&nbsp;插入代码段<br>Ctrl+K,S:&nbsp;插入外侧代码<br>F12:&nbsp;转到所调用过程或变量的定义<br>窗口快捷键<br>Ctrl+W,W:&nbsp;浏览器窗口<br>Ctrl+W,S:&nbsp;解决方案管理器<br>Ctrl+W,C:&nbsp;类视图<br>Ctrl+W,E:&nbsp;错误列表<br>Ctrl+W,O:&nbsp;输出视图<br>Ctrl+W,P:&nbsp;属性窗口<br>Ctrl+W,T:&nbsp;任务列表<br>Ctrl+W,X:&nbsp;工具箱<br>Ctrl+W,B:&nbsp;书签窗口<br>Ctrl+W,U:&nbsp;文档大纲<br>Ctrl+D,B:&nbsp;断点窗口<br>Ctrl+D,I:&nbsp;即时窗口<br>Ctrl+Tab:&nbsp;活动窗体切换<br>Ctrl+Shift+N:&nbsp;新建项目<br>Ctrl+Shift+O:&nbsp;打开项目<br>Ctrl+Shift+S:&nbsp;全部保存<br>Shift+Alt+C:&nbsp;新建类<br>Ctrl+Shift+A:&nbsp;新建项<br><br>VS2005的隐藏快捷键&nbsp;<br>&nbsp;<br>这里我将会把一些无意中发现的VS2005中没有明确指出的快捷键共享出来，并不是所有的快捷键，或者常见的一些快捷键。<br>1、Ctrl+Space直接完成类或函数（本来这个并不算隐藏的快捷键，但是因为中文输入法抢占这个快捷键，所以。。。，替代的快捷键是Alt+Right）<br>2、Shift+Delete整行删除，并且将这一行放到剪贴板（这时候不能选中一段内容）<br>3、Shift+Insert粘贴，有点匪夷所思，Ctrl+V就可以了，大概是为了和Shift+Delete对应吧<br>4、Ctrl+Up，Ctrl+Down滚动编辑器，但尽量不移动光标，光标保证在可见范围内<br>5、Ctrl+BackSpace，Ctrl+Delete整词删除，有的时候很有用<br>6、Ctrl+Left，Ctrl+Right按整词移动光标（不算隐藏，和前面几条加起来就是Ctrl光标控制套件了）<br>7、Alt+Shift+F10打开执行改名，实现接口和抽象类的小窗口（还可以用Ctrl+.，不过有的中文输入法用到这个）<br>8、Shift+F9调试是打开QuickWatch，内容是当前光标所在处的内容<br>9、F12转跳到定义，很有用的快捷键<br>10、Shift+F12查找所有引用<br>11、Ctrl+F10=F5，开始Debug<br>12、Ctrl+F6循环察看代码窗口，有点Ctrl+Tab的感觉<br>13、Ctrl+F3查找当前光标选中的内容，可以和F3配合使用<br>14、Ctrl+F2将焦点转移到类的下拉框上<br>15、Alt+F7=Ctrl+Tab<br>16、Alt+F11新开VS2005并编辑宏<br>17、Alt+F12查找=Ctrl+F<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1059</link><title><![CDATA[asp.net&nbsp;多语言制作方法]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-08-25 02:27 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1059</guid><description><![CDATA[asp.net&nbsp;2.0中的App_GlobalResources可以用来解决本地化的问题，程序会根据浏览器的语言首选项自动判断显示出本地化的界面。<br><br>一、首先在App_GlobalResources新建resx资源文件。<br><br>我们建立3个文件，如：<br>lang.zh-cn.resx<br>lang.resx<br>lang.es-ar.resx<br>至于如何确认语言，通过ie，工具，internet选项，语言，添加...就可以看到各国语言类型了，<br>这里es-ar是西班牙语。<br>不同语言的resx中项目应该具有相同的名称：<br>username:用户名---lang.zh-cn.resx<br>username:UserName---lang.es-ar.resx<br>username:UserName---lang.resx<br>这里lang.resx文件一定要有username这个名称<br><br>二、然后在页面里对应地方添加语言控件了<br><br>&lt;asp:Literal&nbsp;ID=&quot;Literal1&quot;&nbsp;runat=&quot;server&quot;&nbsp;Text=&quot;&lt;%$&nbsp;Resources:lang,UserName%&gt;&quot;&nbsp;/&gt;<br>注意所有需要语言的地方都要写成控件。<br><br>三、接着就是在web.config里定义默认语言类型了<br><br>web.config中增加&lt;globalization&nbsp;culture=&quot;en-US&quot;&nbsp;uiCulture=&quot;en-US&quot;/&gt;来改变程序默认使用的语言项。&nbsp;<br><br>当然也可以可以往global全局应用程序中增加如下代码<br><br>　　void&nbsp;Application_BeginRequest(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>　　{<br>　　try<br>　　{<br>　　if&nbsp;(Request.Cookies[&quot;lang&quot;]&nbsp;!=&nbsp;null)<br>　　{<br>　　System.Threading.Thread.CurrentThread.CurrentCulture&nbsp;=&nbsp;System.Globalization.CultureInfo.CreateSpecificCulture(Request.Cookies[&quot;lang&quot;].Value.ToString());<br>　　System.Threading.Thread.CurrentThread.CurrentUICulture&nbsp;=&nbsp;new&nbsp;System.Globalization.CultureInfo(Request.Cookies[&quot;lang&quot;].Value.ToString());<br>　　}<br>　　}<br>　　catch&nbsp;(Exception)<br>　　{&nbsp;}<br>　　}&nbsp;&nbsp;<br><br><br>　　即可通过设置变换cookie值来达到即时切换语言的目的，轻松的实现了程序的多语言。<br><br>以上文章改写参考自互联网，参考文章：<a href="http://pcedu.pconline.com.cn/empolder/net/asp/0808/1396810.html" target="_blank">http://pcedu.pconline.com.cn/empolder/net/asp/0808/1396810.html</a><br><br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1058</link><title><![CDATA[纪念]]></title><author><![CDATA[浪人]]></author><category>生活札记</category><pubDate>2009-08-04 11:27 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1058</guid><description><![CDATA[纪念，<br><br>仅，为了纪念最该记住的人和回忆不美好的往事，<br>但，今日却是往日她曾经最美好幸福的回忆，<br><br>思念，是那咕噜咕噜涌出来的水，离开源头便是消散，<br>而我，是为了留住思念纪念今日。<br><br>父忧母难日也...<br><br>some&nbsp;...&nbsp;important,but&nbsp;some&nbsp;...&nbsp;won&#39;t&nbsp;come&nbsp;back.]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1057</link><title><![CDATA[ASP程序加密与解密方法全面解析]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-07-23 04:19 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1057</guid><description><![CDATA[目前对ASP程序的加密方法主要有三种：脚本编码器(SRCENC.EXE)加密、组件加密、自编程序加密，下面我们就来展开介绍这三种加密方法……&nbsp;<br>　　如今，用ASP技术构建的网站随处可见。由于ASP脚本是在服务器上解释执行的(无法编译)，因此你辛苦开发出来的ASP代码，很容易被人拷去任意修改，如何保护ASP源代码呢?这是每个ASP站长都会遇到的难题，网上求解这类问题的帖子非常多，下面我们就来谈谈ASP程序的加密方法。<br><br>　　一、如何加密ASP程序?<br><br>　　目前对ASP程序的加密方法主要有三种：脚本编码器(SRCENC.EXE)加密、组件加密、自编程序加密，下面我们就来展开介绍这三种加密方法。<br><br>　　1、使用微软的MS&nbsp;Script&nbsp;Encode进行加密<br><br>　　微软提供了脚本编码器MS&nbsp;Script&nbsp;Encode(下载地址<a href="http://www.itgene.cn/itgene/download/download.aspID=232" target="_blank">http://www.itgene.cn/itgene/download/download.aspID=232</a>)，可以对ASP程序进行加密。这是一个简单的命令行工具，其执行文件是SRCENC.EXE，需要在DOS下运行。它只加密页面中嵌入的脚本代码，把网页中之间的ASP代码转换成不可读的乱码，其他部分则保持原样不变。加密后的程序，必须使用Internet&nbsp;Explorer&nbsp;5.0以上版本才能正常浏览。<br><br>　　用SRCENC加密之后，文件中被加密过的部分将变成只读类型，假如你修改了加密部分(哪怕只改动一个字)，就会导致整个文件不能使用。对于&nbsp;VBScript，加密后在源文件的第一行会显示：&lt;SCRIPT&nbsp;LANGUAGE=&quot;VBScript.Encode&quot;&gt;；而JScript（或&nbsp;JavaScript）则会显示：&lt;SCRIPT&nbsp;LANGUAGE=&quot;JScript.Encode&quot;&gt;<br><br>　　(1)加密方法<br><br>　　单击“开始”/程序/附件/命令提示符，在MS-DOS&nbsp;命令行中输入以下命令，即可对某个asp文件加密：<br><br>SRCENC&nbsp;&nbsp;[switches]&nbsp;&nbsp;&lt;要加密asp文件名&gt;&nbsp;&nbsp;&lt;加密后的文件名&gt;<br><br>　　其中[switches]项目可以选以下5个参数<br><br>　　[switches]&nbsp;含义&nbsp;举例<br><br>　　/s&nbsp;可选。命令中带了该参数，加密过程中屏幕上就不会有输出。&nbsp;screnc&nbsp;/s&nbsp;lacl.sct&nbsp;ulacl.sct<br><br>　　对当前目录中的脚本小程序lacl.sct加密，加密过程中屏幕不显示任何信息<br><br>　　/f&nbsp;可选。指定输出文件是否覆盖同名输入文件。忽略，将不执行覆盖。&nbsp;screnc&nbsp;/f&nbsp;lacl.asp<br><br>　　对文件&nbsp;lacl.asp加密，并用编码后的同名文件覆盖原文件<br><br>　　/xl&nbsp;可选。是否在.asp文件的顶部添加@Language指令。忽略，将添加。<br><br>　　/l&nbsp;defLanguage&nbsp;可选。指定Script&nbsp;Encoder加密中选择的缺省脚本语言。文件中不包含这种脚本语言特性的脚本将被Script&nbsp;Encoder&nbsp;忽略。<br><br>　　对于HTML文件，JScript为内置缺省脚本语言;对于ASP文件，VBScript为缺省脚本语言;对于扩展名为.vbs或.js的文件，Script&nbsp;Encoder也有自适应能力。&nbsp;screnc&nbsp;/l&nbsp;vbscript&nbsp;lacl.htm&nbsp;ulacl.htm<br><br>　　对文件&nbsp;lacl.htm加密，并生成输出文件&nbsp;ulacl.htm，确保没有指定语言属性的脚本块使用&nbsp;VBScript<br><br>　　/e&nbsp;defExtension&nbsp;可选。指定待加密文件的文件扩展名。缺省状态下，Script&nbsp;Encoder能识别asa,asp,cdx,htm,html,js,sct和vbs文件。&nbsp;screnc&nbsp;/e&nbsp;asp&nbsp;11\*.*&nbsp;f:\labxw-jm<br><br>　　对11目录中的所有.ASP&nbsp;文件进行加密，并把编码后的输出文件放在f:\labxw-jm目录中<br><br>　　(2)操作举例<br><br>　　例如要加密当前目录中的lacl.asp文件，生成加密文件ulacl.asp，则在DOS下输入命令：<br><br>　　screnc&nbsp;lacl.asp&nbsp;ulacl.asp<br><br>　　对当前目录中的所有&nbsp;.ASP&nbsp;文件进行加密，并把编码后的输出文件放在f:\labxw中，则使用命令：<br><br>　　screnc&nbsp;*.asp&nbsp;f:\labxw<br><br>　　2、使用组件加密asp<br><br>　　以上被screnc加密过的程序，是可以解密的(解密方法下文有介绍)，如果你想彻底保护自己的asp代码，可以通过开发activex&nbsp;dll组件的方法进行保护。<br><br>　　Dll文件是被编译过的机器代码，如果没有源项目文件，是不可能被反编译的，所以组件加密这种方法最安全，也不可能被破解。下面我们来举例说明操作过程，例如你要保护以下asp代码：<br><br>以下是引用片段：<br>　　set&nbsp;rs=server.createobject(&quot;adodb.recordset&quot;)&nbsp;<br>　　sql=&quot;select&nbsp;*&nbsp;from&nbsp;gq&nbsp;where&nbsp;xs=1&nbsp;&nbsp;order&nbsp;by&nbsp;date&nbsp;asc&quot;&nbsp;<br>　　rs.open&nbsp;sql,conn,1,1&nbsp;<br>　　if&nbsp;rs.eof&nbsp;and&nbsp;rs.bof&nbsp;then&nbsp;<br>　　response.write&quot;&lt;A&nbsp;HREF=new0.asp?lbid=gqx&nbsp;&gt;&lt;%=&nbsp;gqx&nbsp;%&gt;&lt;/A&gt;&quot;&nbsp;<br>　　else&nbsp;<br>　　Response.Write&nbsp;&quot;&quot;&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　set&nbsp;rs=nothing&nbsp;<br>　　conn.close&nbsp;<br>　　set&nbsp;conn=nothing&nbsp;<br><br><br>　　可以把它们改写成VB组件，然后在ASP文件中调用组件即可。操作步骤如下：<br><br>　　(1)新建一个vb6的activex&nbsp;dll项目<br><br>　　在属性窗口中，命名你的库模块和项目文件(例如项目名lacl，模块名disp)，以后在asp文件中，调用的对象名将为lacl_disp<br><br>　　选择vb6中的项目菜单中的references&nbsp;，选中microsoft&nbsp;activex&nbsp;data&nbsp;objects&nbsp;2.0&nbsp;library<br><br>　　(2)编写VB组件<br><br>　　接下来把&lt;欲保护的asp代码&gt;改写成VB组件，代码如下：<br><br>以下是引用片段：<br>　　public&nbsp;function&nbsp;html_combo(disp_table&nbsp;as&nbsp;string)&nbsp;as&nbsp;string&nbsp;<br>　　dim&nbsp;outstring&nbsp;as&nbsp;string&nbsp;<br>　　dim&nbsp;conn&nbsp;as&nbsp;adodb.connection&nbsp;<br>　　dim&nbsp;rst&nbsp;as&nbsp;adodb.recordset&nbsp;<br>　　dim&nbsp;sqlstring&nbsp;as&nbsp;string&nbsp;<br>　　set&nbsp;conn&nbsp;=&nbsp;createobject(&quot;adodb.connection&quot;)&nbsp;<br>　　set&nbsp;rst&nbsp;=&nbsp;createobject(&quot;adodb.recordset&quot;)&nbsp;<br>　　sqlstring&nbsp;=&nbsp;&quot;select&nbsp;*&nbsp;from&nbsp;&quot;&nbsp;&amp;&nbsp;disp_table&nbsp;&amp;&nbsp;&quot;&nbsp;where&nbsp;xs=1&nbsp;&nbsp;order&nbsp;by&nbsp;date&nbsp;asc&quot;&nbsp;<br>　　&#39;以上是在VB中打开数据库操作，数据库中的表名、字段名，你可以根据自己的需要修改&nbsp;<br>　　conn.open&nbsp;&quot;dsn=sumnet&quot;&nbsp;<br>　　rst.open&nbsp;sqlstring,&nbsp;conn,&nbsp;3,&nbsp;3&nbsp;<br>　　if&nbsp;rst.eof&nbsp;and&nbsp;rst.bof&nbsp;then&nbsp;<br>　　outstring&nbsp;=&nbsp;&quot;还没有这类单位信息&quot;&nbsp;<br>　　else&nbsp;<br>　　rst.movefirst&nbsp;<br>　　outstring&nbsp;=&nbsp;&quot;&lt;A&nbsp;HREF=new0.asp?lbid=&quot;&amp;request(&quot;lbid&quot;)&nbsp;&amp;&nbsp;&quot;&gt;&lt;/A&gt;&quot;&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　html_combo&nbsp;=&nbsp;outstring&nbsp;<br>　　rst.close&nbsp;<br>　　conn.close&nbsp;<br>　　end&nbsp;function&nbsp;<br><br><br>　　写好以上VB代码后，保存项目并开始编译。<br><br>　　(3)生成安装文件<br><br>　　打开visual&nbsp;studio&nbsp;6中附带的package&nbsp;deployment&nbsp;wizard程序，选择刚才建立的activex项目文件lacl;选择package，选择要打包的脚本或使用默认脚本，选择标准安装，为生成的安装文件选择一个存放目录，选择single&nbsp;cab.&nbsp;其他均默认;然后单击下一步，安装文件就自动生成了!<br><br>　　(4)在IIS服务器上安装组件<br><br>　　在IIS服务器上运行这个安装文件，把组件安装到服务器上。<br><br>　　(5)在网页中调用组件<br><br>　　以后在ASP文件中，通过调用该组件完成原来的功能。在网页中调用你制作的组件，方法如下：<br><br>以下是引用片段：<br>&nbsp;&nbsp;&lt;%@&nbsp;language=&quot;vbscript&quot;&nbsp;%&gt;&nbsp;<br>&nbsp;&nbsp;&lt;%&nbsp;<br>&nbsp;&nbsp;set&nbsp;diaoyong&nbsp;=&nbsp;server.createobject(&quot;lacl_disp.disp&quot;)&nbsp;<br>&nbsp;&nbsp;%&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;html&gt;&nbsp;<br>&nbsp;&nbsp;&lt;body&gt;&nbsp;<br>&nbsp;&nbsp;&lt;%=&nbsp;diaoyong.html_combo(&quot;gq&quot;)%&gt;&nbsp;<br>&nbsp;&nbsp;&lt;br&gt;&nbsp;<br>&nbsp;&nbsp;&lt;/body&gt;&nbsp;<br>&nbsp;&nbsp;&lt;/html&gt;&nbsp;<br><br><br>　　你看，现在Asp文件中的内容只是组件的调用(与以前完全不同)，别人即使得到该文件，也无法编辑修改源代码，因为代码都被封装在VB组件中了，对于组件中的代码，外人是无法看到、也不能反编译的!<br><br>　　3、自己编写加密程序<br><br>　　组件加密方法虽然不可破解，但是要求你熟悉VB编程，需要把ASP代码改写成VB组件，工作量很大，所以建议大家自己编程来保护asp代码，其基本思路是：写一个加密函数base64Encode和解密函数base64Decode，先用加密函数处理&lt;要保护的asp代码&gt;，得到对应的密文hu；然后再用execute(base64Decode(hu))替换&lt;欲保护的asp代码&gt;。<br><br>　　例如我们要保护上面那段asp代码，可以这样操作：<br><br>　　(1)用WORD处理&lt;要保护的ASP代码&gt;<br><br>　　将&lt;要保护的ASP代码&gt;拷到WORD中;在WORD中，把代码里的段落标记(回车换行)全部替换成“水”这个汉字，方法是：点击“编辑”/替换，光标移到“查找内容”栏，点“高级”/特殊字符，选择“段落标记”;光标移到“替换为”栏，输入“水”，最后点“全部替换”。同法，把代码中的单引号也全部替换成“加”这个汉字。<br><br>　　(2)编写、运行加密程序<br><br>　　在FrontPage中编写加密程序，该程序中有初始化函数initCodecs、加密函数base64Encode(代码如下)，把WORD处理后的代码，copy粘贴在inp&nbsp;=&nbsp;&quot;&quot;这句中，最后以test1.asp名存盘;在IE中输入<a href="http://127.0.0.1/test1.asp" target="_blank">http://127.0.0.1/test1.asp</a>本地运行该文件;屏幕上会显示一大段乱码(例如c2V0IHJzPXNlcnZlci5jcmVhd...)，这就是《要保护的asp代码》对应的密文!<br><br>以下是引用片段：<br>　　OPTION&nbsp;EXPLICIT&nbsp;<br>　　const&nbsp;BASE_64_MAP_INIT&nbsp;=&nbsp;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;&nbsp;<br>　　dim&nbsp;newline&nbsp;<br>　　dim&nbsp;Base64EncMap(63)&nbsp;<br>　　dim&nbsp;Base64DecMap(127)&nbsp;<br>　　dim&nbsp;inp,hu,encode&nbsp;<br>　　call&nbsp;initCodecs&nbsp;&#39;初始化&nbsp;<br>　　inp&nbsp;=&nbsp;&quot;&lt;WORD处理后的asp代码&gt;&quot;&nbsp;&#39;将要保护的asp代码用WORD处理，然后填在此处&nbsp;<br>　　hu=&nbsp;base64Encode(inp)&nbsp;&#39;调用函数base64Encode进行加密，得到密文hu&nbsp;<br>　　Response.Write(hu)&nbsp;&#39;显示密文&nbsp;<br>　　PUBLIC&nbsp;SUB&nbsp;initCodecs()&nbsp;&#39;初始化函数initCodecs&nbsp;<br>　　newline&nbsp;=&nbsp;&quot;&lt;P&gt;&quot;&nbsp;&amp;&nbsp;chr(13)&nbsp;&amp;&nbsp;chr(10)<br>　　dim&nbsp;max,&nbsp;idx&nbsp;<br>　　max&nbsp;=&nbsp;len(BASE_64_MAP_INIT)&nbsp;<br>　　for&nbsp;idx&nbsp;=&nbsp;0&nbsp;to&nbsp;max&nbsp;-&nbsp;1&nbsp;<br>　　Base64EncMap(idx)&nbsp;=&nbsp;mid(BASE_64_MAP_INIT,&nbsp;idx&nbsp;+&nbsp;1,&nbsp;1)&nbsp;<br>　　next&nbsp;<br>　　for&nbsp;idx&nbsp;=&nbsp;0&nbsp;to&nbsp;max&nbsp;-&nbsp;1&nbsp;<br>　　Base64DecMap(ASC(Base64EncMap(idx)))&nbsp;=&nbsp;idx&nbsp;<br>　　next&nbsp;<br>　　END&nbsp;SUB&nbsp;<br>　　PUBLIC&nbsp;FUNCTION&nbsp;base64Encode(plain)&nbsp;&#39;加密函数base64Encode&nbsp;<br>　　if&nbsp;len(plain)&nbsp;=&nbsp;0&nbsp;then&nbsp;<br>　　base64Encode&nbsp;=&nbsp;&quot;&quot;&nbsp;<br>　　exit&nbsp;function&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　dim&nbsp;ret,&nbsp;ndx,&nbsp;by3,&nbsp;first,&nbsp;second,&nbsp;third&nbsp;<br>　　by3&nbsp;=&nbsp;(len(plain)&nbsp;\&nbsp;3)&nbsp;*&nbsp;3&nbsp;<br>　　ndx&nbsp;=&nbsp;1&nbsp;<br>　　do&nbsp;while&nbsp;ndx&nbsp;&lt;=&nbsp;by3&nbsp;<br>　　first&nbsp;=&nbsp;asc(mid(plain,&nbsp;ndx+0,&nbsp;1))&nbsp;<br>　　second&nbsp;=&nbsp;asc(mid(plain,&nbsp;ndx+1,&nbsp;1))&nbsp;<br>　　third&nbsp;=&nbsp;asc(mid(plain,&nbsp;ndx+2,&nbsp;1))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;(first&nbsp;\&nbsp;4)&nbsp;AND&nbsp;63&nbsp;)&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;((first&nbsp;*&nbsp;16)&nbsp;AND&nbsp;48)&nbsp;+&nbsp;((second&nbsp;\&nbsp;16)&nbsp;AND&nbsp;15&nbsp;)&nbsp;)&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;((second&nbsp;*&nbsp;4)&nbsp;AND&nbsp;60)&nbsp;+&nbsp;((third&nbsp;\&nbsp;64)&nbsp;AND&nbsp;3&nbsp;)&nbsp;)&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;third&nbsp;AND&nbsp;63)&nbsp;<br>　　ndx&nbsp;=&nbsp;ndx&nbsp;+&nbsp;3&nbsp;<br>　　loop&nbsp;<br>　　if&nbsp;by3&nbsp;&lt;&nbsp;len(plain)&nbsp;then&nbsp;<br>　　first&nbsp;=&nbsp;asc(mid(plain,&nbsp;ndx+0,&nbsp;1))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;(first&nbsp;\&nbsp;4)&nbsp;AND&nbsp;63&nbsp;)&nbsp;<br>　　if&nbsp;(len(plain)&nbsp;MOD&nbsp;3&nbsp;)&nbsp;=&nbsp;2&nbsp;then&nbsp;<br>　　second&nbsp;=&nbsp;asc(mid(plain,&nbsp;ndx+1,&nbsp;1))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;((first&nbsp;*&nbsp;16)&nbsp;AND&nbsp;48)&nbsp;+&nbsp;((second&nbsp;\&nbsp;16)&nbsp;AND&nbsp;15&nbsp;)&nbsp;)&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;((second&nbsp;*&nbsp;4)&nbsp;AND&nbsp;60)&nbsp;)&nbsp;<br>　　else&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;Base64EncMap(&nbsp;(first&nbsp;*&nbsp;16)&nbsp;AND&nbsp;48)&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&#39;&amp;&nbsp;&quot;=&quot;&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&#39;&amp;&nbsp;&quot;=&quot;&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　base64Encode&nbsp;=&nbsp;ret&nbsp;<br>　　END&nbsp;FUNCTION&nbsp;<br><br>　　(3)重新改写要保护的asp文件<br><br>　　改写原来的asp文件，在文件中增加UnEncode&nbsp;和base64Decode函数，全部代码如下：<br><br>以下是引用片段：<br>　　Dim&nbsp;Hu,Hu2&nbsp;<br>　　&#39;拷贝“欲保护asp代码”的密文&nbsp;将之存放到Hu变量中&nbsp;<br>　　Hu=”c2V0IHJzPXNlcnZlci5jcmVhdGVvYmplY3Qo12Fkb2RiLnJlY29yZHNldOMpICAgICDuc3FsPeNzZWxlY3QgKiBmcm9tIGdxICB3aGVyZSB4cz0xIG9yZGVyIGJ5IGRhdGUgYXNj1yAgICAgsnJzLm9wZW4gc3FsLGNvbm4sMSwxICAgICDuaWYgcnMuZW9mIGFuZCBycy5ib2YgdGhlbiDucmVzcG9uc2Uud3JpdGUTvSD7INAg5iAgILUgvyAFILITsmVsc2UgsiAgICAgUmVzcG9uc2UuV3JpdGUg1zxBIEhSRUY9bmV3MC5hc3A/bGJpZD0TJnJlcXVlc3Qo12xiaWQTKSAmIOM+PC9BPuPuZW5kIGlmICAgIL5zZXQgcnM9bm90aGluZyAgICAgICAgsmNvbm4uY2xvc2UgICAgICDuc2V0IGNvbm49bm90aGluZyAgIL4”&nbsp;<br>　　Hu2=&nbsp;base64Decode(hu)&nbsp;&#39;还原要保护的ASP代码&nbsp;<br>　　execute(UnEncode(Hu2))&nbsp;&#39;还原单引号、回车换行，并执行原代码&nbsp;<br>　　’解密函数base64Decode&nbsp;<br>　　FUNCTION&nbsp;base64Decode(scrambled)&nbsp;<br>　　if&nbsp;len(scrambled)&nbsp;=&nbsp;0&nbsp;then&nbsp;<br>　　base64Decode&nbsp;=&nbsp;&quot;&quot;&nbsp;<br>　　exit&nbsp;function&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　dim&nbsp;realLen&nbsp;<br>　　realLen&nbsp;=&nbsp;len(scrambled)&nbsp;<br>　　do&nbsp;while&nbsp;mid(scrambled,&nbsp;realLen,&nbsp;1)&nbsp;=&nbsp;&quot;=&quot;&nbsp;<br>　　realLen&nbsp;=&nbsp;realLen&nbsp;-&nbsp;1&nbsp;<br>　　loop&nbsp;<br>　　dim&nbsp;ret,&nbsp;ndx,&nbsp;by4,&nbsp;first,&nbsp;second,&nbsp;third,&nbsp;fourth&nbsp;<br>　　ret&nbsp;=&nbsp;&quot;&quot;&nbsp;<br>　　by4&nbsp;=&nbsp;(realLen&nbsp;\&nbsp;4)&nbsp;*&nbsp;4&nbsp;<br>　　ndx&nbsp;=&nbsp;1&nbsp;<br>　　do&nbsp;while&nbsp;ndx&nbsp;&lt;=&nbsp;by4&nbsp;<br>　　first&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+0,&nbsp;1)))&nbsp;<br>　　second&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+1,&nbsp;1)))&nbsp;<br>　　third&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+2,&nbsp;1)))&nbsp;<br>　　fourth&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+3,&nbsp;1)))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;chr(&nbsp;((first&nbsp;*&nbsp;4)&nbsp;AND&nbsp;255)&nbsp;+&nbsp;((second&nbsp;\&nbsp;16)&nbsp;AND&nbsp;3))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;chr(&nbsp;((second&nbsp;*&nbsp;16)&nbsp;AND&nbsp;255)&nbsp;+&nbsp;((third&nbsp;\&nbsp;4)&nbsp;AND&nbsp;15))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;chr(&nbsp;((third&nbsp;*&nbsp;64)&nbsp;AND&nbsp;255)&nbsp;+&nbsp;(fourth&nbsp;AND&nbsp;63))&nbsp;<br>　　ndx&nbsp;=&nbsp;ndx&nbsp;+&nbsp;4&nbsp;<br>　　loop&nbsp;<br>　　if&nbsp;ndx&nbsp;&lt;&nbsp;realLen&nbsp;then&nbsp;<br>　　first&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+0,&nbsp;1)))&nbsp;<br>　　second&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,&nbsp;ndx+1,&nbsp;1)))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;chr(&nbsp;((first&nbsp;*&nbsp;4)&nbsp;AND&nbsp;255)&nbsp;+&nbsp;((second&nbsp;\&nbsp;16)&nbsp;AND&nbsp;3))&nbsp;<br>　　if&nbsp;realLen&nbsp;MOD&nbsp;4&nbsp;=&nbsp;3&nbsp;then&nbsp;<br>　　third&nbsp;=&nbsp;Base64DecMap(asc(mid(scrambled,ndx+2,1)))&nbsp;<br>　　ret&nbsp;=&nbsp;ret&nbsp;&amp;&nbsp;chr(&nbsp;((second&nbsp;*&nbsp;16)&nbsp;AND&nbsp;255)&nbsp;+&nbsp;((third&nbsp;\&nbsp;4)&nbsp;AND&nbsp;15))&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　base64Decode&nbsp;=&nbsp;ret&nbsp;<br>　　END&nbsp;FUNCTION&nbsp;<br>　　&#39;还原单引号、回车换行函数UnEncode&nbsp;<br>　　function&nbsp;UnEncode(cc)&nbsp;<br>　　for&nbsp;i&nbsp;=&nbsp;1&nbsp;to&nbsp;len(cc)&nbsp;<br>　　if&nbsp;mid(cc,i,1)&lt;&gt;&nbsp;&quot;水&quot;&nbsp;then&nbsp;<br>　　if&nbsp;mid(cc,i,1)=&quot;加&quot;&nbsp;then&nbsp;<br>　　temp&nbsp;=&nbsp;&quot;&quot;&quot;&quot;&nbsp;&amp;&nbsp;temp&nbsp;<br>　　else&nbsp;<br>　　temp&nbsp;=&nbsp;Mid(cc,&nbsp;i,&nbsp;1)&nbsp;+&nbsp;temp&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　else&nbsp;<br>　　temp=newline&amp;temp&nbsp;<br>　　end&nbsp;if&nbsp;<br>　　next&nbsp;<br>　　UnEncode=temp&nbsp;<br>　　end&nbsp;function&nbsp;<br><br><br>　　将以上代码以test2.asp名存盘。<br><br>　　(4)用SRCENC加密test2.asp<br><br>　　用SRCENC加密test2.asp，然后把它发布到服务器上，这样别人即使得到该文件、破解了SRCENC加密，也无法看到原代码，因为原代码在test2.asp中是密文(Hu=”c2V0IHJzPXNlcnZlc...)，所以ASP代码就被保护起来了!<br><br>　　二、加密过的asp程序如何解密?<br><br>　　如何对加密过的asp程序解密呢?首先我们要告诉大家，用组件法加密的asp程序是无法解密的，而screnc加密过的程序则可以解密，方法是：使用解密软件(ZWDECODE.EXE)。<br><br>　　ZWDECODE.EXE(下载地址<a href="http://www.mydown.com/softdown/45/45183.html" target="_blank">http://www.mydown.com/softdown/45/45183.html</a>)可以对MS&nbsp;Script&nbsp;Encode加密的ASP文件进行解密，还原出源代码。<br><br>　　(1)解密方法<br><br>　　单击“开始”/程序/附件/命令提示符，在MS-DOS&nbsp;命令行中输入以下命令，即可恢复原代码：<br><br>　　ZWDECODE&nbsp;&lt;已加密asp文件名&gt;<br><br>　　其中&lt;已加密asp文件名&gt;必需输入，该文件名可带目录路径;也必需输入，这是要生成的输出文件名，也可以带路径信息。<br><br>　　(2)举例<br><br>　　例如F:\22\lacl.asp曾被screnc加密处理过，现在要恢复其中的源代码，你可以在MS-DOS中输入以下命令：<br><br>　　ZWDECODE&nbsp;F:\22\lacl.asp&nbsp;d:\ulacl.asp<br><br>　　执行完毕，在D盘上就会生成一个ulacl.asp文件，打开该文件，你就能看到源代码了!&nbsp;<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1056</link><title><![CDATA[MySQL忘记密码解决方案]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-07-23 02:51 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1056</guid><description><![CDATA[在windows下：&nbsp;<br>打开命令行窗口，停止mysql服务：Net&nbsp;stop&nbsp;mysql&nbsp;<br>到mysql的安装路径启动mysql，在bin目录下使用mysqld-nt.exe启动，在命令行窗口执行：mysqld-nt&nbsp;--skip-grant-tables&nbsp;<br>然后另外打开一个命入令行窗口，执行mysql，此时无需输入密码即可进入。&nbsp;<br>&gt;use&nbsp;mysql&nbsp;<br>&gt;update&nbsp;user&nbsp;set&nbsp;password=password(&quot;new_pass&quot;)&nbsp;where&nbsp;user=&quot;root&quot;;&nbsp;<br>&gt;flush&nbsp;privileges;&nbsp;<br>&gt;exit&nbsp;<br>使用任务管理器，找到mysqld-nt的进程，结束进程！&nbsp;<br>在重新启动mysql-nt服务，就可以用新密码登录了。&nbsp;<br><br>在linux下：&nbsp;<br>如果&nbsp;MySQL&nbsp;正在运行，首先杀之：&nbsp;killall&nbsp;-TERM&nbsp;mysqld。&nbsp;<br>启动&nbsp;MySQL&nbsp;：bin/safe_mysqld&nbsp;--skip-grant-tables&nbsp;&amp;&nbsp;<br>就可以不需要密码就进入&nbsp;MySQL&nbsp;了。&nbsp;<br>然后就是&nbsp;<br>&gt;use&nbsp;mysql&nbsp;<br>&gt;update&nbsp;user&nbsp;set&nbsp;password=password(&quot;new_pass&quot;)&nbsp;where&nbsp;user=&quot;root&quot;;&nbsp;<br>&gt;flush&nbsp;privileges;&nbsp;<br>重新杀&nbsp;MySQL&nbsp;，用正常方法启动&nbsp;MySQL&nbsp;。<br><br>本文来自:&nbsp;(www.91linux.com)&nbsp;详细出处参考：<a href="http://www.91linux.com/html/article/database/mysql/20090330/16283.html" target="_blank">http://www.91linux.com/html/article/database/mysql/20090330/16283.html</a>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1055</link><title><![CDATA[隐藏的日志，登录后才能查看]]></title><author><![CDATA[浪人]]></author><category>三生石畔</category><pubDate>2009-06-21 02:05 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1055</guid></item><item><link>http://or2.com.cn/blogview.asp?logID=1054</link><title><![CDATA[容易醉的一天]]></title><author><![CDATA[浪人]]></author><category>生活札记</category><pubDate>2009-06-21 01:16 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1054</guid><description><![CDATA[robin&nbsp;&amp;&nbsp;king&nbsp;出差了,赖皮也忙着放我鸽子不去踢球,<br>哈米要来坐坐结果我不在公司,而bonbon似乎在抱怨我没给他捎上他卡哇伊的帆布鞋和阿巴尼的牛仔裤,也依稀听见...<br><br>恩,今天似乎是比较容易醉的一天,<br>在blog上反复听着她喜欢听的歌曲,带着企图地发现她向往的那个世界远比我想象的简单是的,我的世界太深渊了,呵呵<br><br>最近,我发现自己最近也边健忘和容易熟睡了,是否是带着邪恶的惩罚,让我越烦恼越忘却<br>似乎,我还是喜欢神经和失眠,难以理解<br><br>我希望,有一天能简单地配合这个世界,也让自己简单点.我们所认知的世界太小了，所以会被困惑<br>是否,应该解放自己的思想,不可理喻<br><br>呵呵,今天是比较容易醉的一天,<br>沉醉在蜕变的日子里...<br><br>呃...继续听歌,继续陶醉,呵呵,不要以为我喝酒了,那是愚蠢的行为,<br>这里奉劝哈米戒烟,bonbon和pq戒胖,robin戒瘦,呃..不点戒色..-&nbsp;-~!快闪.]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1053</link><title><![CDATA[ASP中一个字符串处理类加强版(VBScript)]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-06-19 02:04 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1053</guid><description><![CDATA[本文在此基础上进行了一些添加，加了几个适合中文网站的FUNCTION进去，可能还有些没有补充进去，有感兴趣的朋友可以再在此基础上加一点FUNCTION进去，不过可别忘记分享一下！<br>&nbsp;&nbsp;&nbsp;&lt;%<br>&nbsp;&nbsp;&nbsp;class&nbsp;StringOperations<br>&nbsp;&nbsp;&nbsp;&#39;***********************************************************************<br>&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;把字符串换为char型数组<br>&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;需要转换的字符串<br>&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[Array]&nbsp;Char型数组<br>&nbsp;&nbsp;&nbsp;&#39;************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;toCharArray(byVal&nbsp;str)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redim&nbsp;charArray(len(str))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;1&nbsp;to&nbsp;len(str)<br>&nbsp;&nbsp;&nbsp;charArray(i-1)&nbsp;=&nbsp;Mid(str,i,1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toCharArray&nbsp;=&nbsp;charArray<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;把一个数组转换成一个字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;arr&nbsp;[Array]:&nbsp;需要转换的数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;arrayToString(byVal&nbsp;arr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;UBound(arr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strObj&nbsp;=&nbsp;strObj&nbsp;&amp;&nbsp;arr(i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varrayToString&nbsp;=&nbsp;strObj<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;function<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;检查源字符串str是否以chars开头<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;chars&nbsp;[string]:&nbsp;比较的字符/字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[bool]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;startsWith(byVal&nbsp;str,&nbsp;chars)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Left(str,len(chars))&nbsp;=&nbsp;chars&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startsWith&nbsp;=&nbsp;true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startsWith&nbsp;=&nbsp;false<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;检查源字符串str是否以chars结尾<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;chars&nbsp;[string]:&nbsp;比较的字符/字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[bool]&nbsp;<br>&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;endsWith(byVal&nbsp;str,&nbsp;chars)<br>&nbsp;&nbsp;if&nbsp;Right(str,len(chars))&nbsp;=&nbsp;chars&nbsp;then<br>&nbsp;&nbsp;&nbsp;endsWith&nbsp;=&nbsp;true<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;endsWith&nbsp;=&nbsp;false<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;复制N个字符串str<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;n&nbsp;[int]:&nbsp;复制次数<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;复制后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;clone(byVal&nbsp;str,&nbsp;n)<br>&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;1&nbsp;to&nbsp;n<br>&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;value&nbsp;&amp;&nbsp;str<br>&nbsp;&nbsp;next<br>&nbsp;&nbsp;clone&nbsp;=&nbsp;value<br>&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;删除源字符串str的前N个字符<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;n&nbsp;[int]:&nbsp;删除的字符个数<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;删除后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;trimStart(byVal&nbsp;str,&nbsp;n)<br>&nbsp;&nbsp;value&nbsp;=&nbsp;Mid(str,&nbsp;n+1)<br>&nbsp;&nbsp;trimStart&nbsp;=&nbsp;value<br>&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;删除源字符串str的最后N个字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;n&nbsp;[int]:&nbsp;删除的字符个数<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;删除后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;trimEnd(byVal&nbsp;str,&nbsp;n)<br>&nbsp;&nbsp;value&nbsp;=&nbsp;Left(str,&nbsp;len(str)-n)<br>&nbsp;&nbsp;trimEnd&nbsp;=&nbsp;value<br>&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;检查字符character是否是英文字符&nbsp;A-Z&nbsp;&nbsp;or&nbsp;a-z<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;character&nbsp;[char]:&nbsp;检查的字符<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[bool]&nbsp;如果是英文字符,返回TRUE,反之为FALSE<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;isAlphabetic(byVal&nbsp;character)<br>&nbsp;&nbsp;asciiValue&nbsp;=&nbsp;cint(asc(character))<br>&nbsp;&nbsp;if&nbsp;(65&nbsp;&lt;=&nbsp;asciiValue&nbsp;and&nbsp;asciiValue&nbsp;&lt;=&nbsp;90)&nbsp;&nbsp;or&nbsp;(97&nbsp;&lt;=&nbsp;asciiValue&nbsp;and&nbsp;asciiValue&nbsp;&lt;=&nbsp;122)&nbsp;then<br>&nbsp;&nbsp;&nbsp;isAlphabetic&nbsp;=&nbsp;true<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;isAlphabetic&nbsp;=&nbsp;false<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;end&nbsp;function&nbsp;<br><br>&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;对str字符串进行大小写转换<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;转换后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;swapCase(str)<br>&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;1&nbsp;to&nbsp;len(str)<br>&nbsp;&nbsp;&nbsp;current&nbsp;=&nbsp;mid(str,&nbsp;i,&nbsp;1)<br>&nbsp;&nbsp;&nbsp;if&nbsp;isAlphabetic(current)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;high&nbsp;=&nbsp;asc(ucase(current))<br>&nbsp;&nbsp;&nbsp;&nbsp;low&nbsp;=&nbsp;asc(lcase(current))<br>&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;=&nbsp;high&nbsp;+&nbsp;low<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;=&nbsp;return&nbsp;&amp;&nbsp;chr(sum-asc(current))<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;=&nbsp;return&nbsp;&amp;&nbsp;current<br>&nbsp;&nbsp;&nbsp;end&nbsp;if<br>&nbsp;&nbsp;next<br>&nbsp;&nbsp;swapCase&nbsp;=&nbsp;return<br>&nbsp;end&nbsp;function<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;将源字符串str中每个单词的第一个字母转换成大写<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;转换后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;capitalize(str)<br>&nbsp;&nbsp;words&nbsp;=&nbsp;split(str,&quot;&nbsp;&quot;)<br>&nbsp;&nbsp;for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;ubound(words)<br>&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;i&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;&quot;&nbsp;&quot;<br>&nbsp;&nbsp;&nbsp;end&nbsp;if<br>&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;tmp&nbsp;&amp;&nbsp;ucase(left(words(i),&nbsp;1))&nbsp;&amp;&nbsp;right(words(i),&nbsp;len(words(i))-1)<br>&nbsp;&nbsp;&nbsp;words(i)&nbsp;=&nbsp;tmp<br>&nbsp;&nbsp;next<br>&nbsp;&nbsp;capitalize&nbsp;=&nbsp;arrayToString(words)<br>&nbsp;end&nbsp;function&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;将源字符Str后中的&#39;过滤为&#39;&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;转换后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;public&nbsp;function&nbsp;checkstr(Str)<br>&nbsp;&nbsp;If&nbsp;Trim(Str)=&quot;&quot;&nbsp;Or&nbsp;IsNull(str)&nbsp;Then&nbsp;<br>&nbsp;&nbsp;&nbsp;checkstr=&quot;&quot;<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;checkstr=Replace(Trim(Str),&quot;&#39;&quot;,&quot;&#39;&#39;&quot;)<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;End&nbsp;function<br>&nbsp;<br>&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;将字符串中的str中的HTML代码进行过滤<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]&nbsp;转换后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;Public&nbsp;Function&nbsp;HtmlEncode(str)<br>&nbsp;&nbsp;If&nbsp;Trim(Str)=&quot;&quot;&nbsp;Or&nbsp;IsNull(str)&nbsp;then<br>&nbsp;&nbsp;&nbsp;HtmlEncode=&quot;&quot;<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;str=Replace(str,&quot;&gt;&quot;,&quot;&amp;gt;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,&quot;&lt;&quot;,&quot;&amp;lt;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(32),&quot;&amp;nbsp;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(9),&quot;&amp;nbsp;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(34),&quot;&amp;quot;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(39),&quot;&amp;#39;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(13),&quot;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(10)&nbsp;&amp;&nbsp;Chr(10),&nbsp;&quot;&lt;/p&gt;&lt;p&gt;&quot;)<br>&nbsp;&nbsp;&nbsp;str=Replace(str,Chr(10),&quot;&lt;br&gt;&nbsp;&quot;)<br>&nbsp;&nbsp;&nbsp;HtmlEncode=str<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;End&nbsp;Function<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;计算源字符串Str的长度(一个中文字符为2个字节长)<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[Int]&nbsp;源字符串的长度<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;Public&nbsp;Function&nbsp;strLen(Str)<br>&nbsp;&nbsp;If&nbsp;Trim(Str)=&quot;&quot;&nbsp;Or&nbsp;IsNull(str)&nbsp;Then&nbsp;<br>&nbsp;&nbsp;&nbsp;strlen=0<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;Dim&nbsp;P_len,x<br>&nbsp;&nbsp;&nbsp;P_len=0<br>&nbsp;&nbsp;&nbsp;StrLen=0<br>&nbsp;&nbsp;&nbsp;P_len=Len(Trim(Str))<br>&nbsp;&nbsp;&nbsp;For&nbsp;x=1&nbsp;To&nbsp;P_len<br>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Asc(Mid(Str,x,1))&lt;0&nbsp;Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrLen=Int(StrLen)&nbsp;+&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrLen=Int(StrLen)&nbsp;+&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br>&nbsp;&nbsp;&nbsp;Next<br>&nbsp;&nbsp;end&nbsp;if<br>&nbsp;End&nbsp;Function<br>&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@功能说明:&nbsp;截取源字符串Str的前LenNum个字符(一个中文字符为2个字节长)<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;str&nbsp;[string]:&nbsp;源字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@参数说明:&nbsp;&nbsp;-&nbsp;LenNum&nbsp;[int]:&nbsp;截取的长度<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;&#39;&nbsp;@返回值:&nbsp;&nbsp;&nbsp;-&nbsp;[string]:&nbsp;转换后的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&#39;****************************************************************************<br>&nbsp;Public&nbsp;Function&nbsp;CutStr(Str,LenNum)<br>&nbsp;&nbsp;Dim&nbsp;P_num<br>&nbsp;&nbsp;Dim&nbsp;I,X<br>&nbsp;&nbsp;If&nbsp;StrLen(Str)&lt;=LenNum&nbsp;Then<br>&nbsp;&nbsp;&nbsp;Cutstr=Str<br>&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;P_num=0<br>&nbsp;&nbsp;&nbsp;X=0<br>&nbsp;&nbsp;&nbsp;Do&nbsp;While&nbsp;Not&nbsp;P_num&nbsp;&gt;&nbsp;LenNum-2<br>&nbsp;&nbsp;&nbsp;&nbsp;X=X+1<br>&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Asc(Mid(Str,X,1))&lt;0&nbsp;Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_num=Int(P_num)&nbsp;+&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_num=Int(P_num)&nbsp;+&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If<br>&nbsp;&nbsp;&nbsp;&nbsp;Cutstr=Left(Trim(Str),X)&amp;&quot;...&quot;<br>&nbsp;&nbsp;&nbsp;Loop<br>&nbsp;&nbsp;End&nbsp;If<br>&nbsp;End&nbsp;Function<br>end&nbsp;class<br><br>%&gt;<br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1052</link><title><![CDATA[批量更改sql&nbsp;server数据库所有者的对象]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-06-16 05:49 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1052</guid><description><![CDATA[简单说几点，可以解决问题就行<br><br><br>批量修改：<br>EXEC&nbsp;sp_MSforeachtable&nbsp;&#39;exec&nbsp;sp_changeobjectowner&nbsp;&#39;&#39;?&#39;&#39;,&#39;&#39;dbo&#39;&#39;&nbsp;&#39;<br>单个修改：<br>exec&nbsp;sp_changeobjectowner&nbsp;&#39;要改的表名&#39;,&#39;dbo&#39;<br><br>方法一：直接点击该表-》设计-》属性-》更改上面的所有者。该方法针对于表少的情况下。<br><br>方法二：利用脚本直接执行，用系统帐号或者超户登陆到该数据库，然后执行下面语句：<br>sp_configure&nbsp;&#39;allow&nbsp;updates&#39;,&#39;1&#39;<br>go<br>reconfigure&nbsp;with&nbsp;override<br>go<br>update&nbsp;sysobjects&nbsp;set&nbsp;uid=1&nbsp;where&nbsp;uid&lt;&gt;1&nbsp;--根据条件可以任意修改，在多用户之间切换。<br>go<br>sp_configure&nbsp;&#39;allow&nbsp;updates&#39;,&#39;0&#39;<br>go<br>reconfigure&nbsp;with&nbsp;override<br><br>]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1051</link><title><![CDATA[SQL&nbsp;Server&nbsp;不存在或拒绝访问]]></title><author><![CDATA[浪人]]></author><category>ITの心得</category><pubDate>2009-06-12 12:16 AM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1051</guid><description><![CDATA[1、一台机器即作服务器又作客户机，软件连接中出现：<br>[DBNETLIB][ConnectionOpen(connect()).]SQL&nbsp;Server&nbsp;不存在或拒绝访问。<br>现从网上查阅问题解决办法有如下几种：<br>（A）1:你如果是独立上网的请把21端口打开.局域网把1433端口打开就可以了.<br>2;关闭防火墙!<br>（B）把数据库连接的&nbsp;SqlLocalName=&quot;(local)&quot;&nbsp;的(local)&nbsp;改成&nbsp;IP试试。可以把(local)&nbsp;该成127.0.0.1，或者改成外网IP<br>（C）打开服务，暂停全文检索及sql&nbsp;server服务&nbsp;开启sql&nbsp;server服务再开启全文检索服务<br>（D）SQL&nbsp;Server&nbsp;右键属性==&gt;安全选项中的“所有权链接：”“允许跨数据库所有权链接”前面的勾要勾上(此操作需要重起SQL&nbsp;Server)。&nbsp;2、你的问题我也出现过，我是两台电脑组成局域网，一台做网站服务器另一台为数据库服务器，配置为WIN2003-SP1+MS&nbsp;SQL-SP3&nbsp;，网站服务器直接连接外网，数据库服务器通过网站服务器连外网。刚开机的时候一切运行正常，但是没过多久就会出现上面的情况，后来检查发现原来是数据库服务器的防火墙开着呢，当时是为了防止外界攻击才设的，我在防火墙上开了1433端口后试了下还不行，后来关掉防火墙，并关闭网站服务器的INTERNET共享。然后运行，发现一切正常了。<br>5、&nbsp;Sql&nbsp;Server远程连接数据库时发生“[DBNETLIB][ConnectionOpen(connect()).]SQL&nbsp;Server&nbsp;不存在或拒绝访问&nbsp;”的情况，原因有很多种，一般情况都是用过检查：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;1、防火墙；<br>&nbsp;&nbsp;&nbsp;&nbsp;2、1433端口；<br>&nbsp;&nbsp;&nbsp;来排除故障，但今天发现有以下情况同样会造成这个现象。<br>&nbsp;&nbsp;排除过程：<br>&nbsp;&nbsp;&nbsp;&nbsp;1、检查防火墙设置和1433端口设置正确；<br>&nbsp;&nbsp;&nbsp;&nbsp;2、如果出现“找不到网络路径”的报错，那么最好先PING一下它的IP地址。如果PING不通，那么需要先确认它是否连在网络或者网络连通性是否正常。然后查看是否启用了防火墙或者屏蔽掉了相应的端口。如果PING&nbsp;IP地址是正常的，但PING目标机器的计算机名不通，则需要查看是事网络名称解析有问题。关于如何诊断名称解析问题，可以先查看是所有客户端机器有问题还是某一台机器有问题。如果是所有机器的名称解析都有问题，那么你需要到网络的DNS或WINS服务器上检查了。如果只是某一台机器有问题，你需要先检查一下hosts和lmhosts文件；如果正常，可以重新注册一下DNS名字（ipconfig/reisterdns）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;－－－－正常；<br>&nbsp;&nbsp;&nbsp;&nbsp;3、如果出现“xxx计算机无法访问，您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限”的报错，这可能是计算机的安全设置被改动过了，导致目标计算机无法被访问。可以采取以下步骤解决：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;－－－存在这个问题，通过以下方法来解决<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.&nbsp;打开“我的电脑”，在菜单上选择“工具”-&gt;“文件夹选项”-&gt;“查看”，清除“使用简单文件共享（推荐）”的选择。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.&nbsp;右键点击“我的电脑”，选择“管理”，选择“本地用户和组”-&gt;“用户”，右键点击Guest用户，选“属性”，清除“帐户已停用”的选择。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.&nbsp;点击“开始”-&gt;“运行”，输入secpol.msc，选择左边的“本地策略”-&gt;“用户权力指派”，双击右边的“从网络访问此计算机”，保证其中有Everyone，双击左边的“拒绝从网络访问此计算机”，保证其是空的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.&nbsp;选择左边的“本地策略”-&gt;“安全选项”，a.确认右边的“网络访问：本地帐户的共享与安全模式”为“经典”；b.确认右边的“Microsoft网络客户：为通讯启用数字签名（总是）”为“已停用”；c.确认右边的“Microsoft网络客户：为通讯启用数字签名（如果服务器允许）”为“已启用”；d.确认右边的“Microsoft网络服务器：为通讯启用数字签名（总是）”为“已停用”；e.确认右边的“Microsoft网络服务器：为通讯启用数字签名（如果服务器允许）”为“已启用”。<br>&nbsp;&nbsp;&nbsp;&nbsp;4、用ODBC连接，结果一切OK。]]></description></item><item><link>http://or2.com.cn/blogview.asp?logID=1049</link><title><![CDATA[前缘]]></title><author><![CDATA[浪人]]></author><category>三生石畔</category><pubDate>2009-06-05 11:38 PM</pubDate><guid>http://or2.com.cn/blogview.asp?logID=1049</guid><description><![CDATA[前缘(台湾·席慕容)<br><br><br>人若真能转世&nbsp;世间若真有轮回<br>那麽&nbsp;我的爱&nbsp;我们前世曾经是什麽<br><br><br>你&nbsp;若曾是江南采莲的女子<br>我&nbsp;必是你皓腕下错过的那朵<br><br><br>你&nbsp;若曾是逃学的顽童<br>我&nbsp;必是从你袋中掉下的那颗崭新的弹珠<br>在路旁的草丛中<br>目送你毫不知情地远去<br><br><br>你若曾是面壁的高僧<br>我必是殿前的那一柱香<br>焚烧著&nbsp;陪伴过你一段静默的时光<br><br><br>因此&nbsp;今生相逢&nbsp;总觉得有些前缘未尽<br>却又很恍忽&nbsp;无法仔细地去分辨<br>无法一一地向你说出<br><br><br>--------------------<br><br><br>席慕容的这散文诗中表现出来,如幻似梦,似有若无,又远又近的境界。人存不存在前生?我们就不用去做科学的探讨与论断了,仅就《前缘》一文而言,诗人是借前生的存在来表达她对相悦者炽烈的爱恋。&nbsp;<br>这爱恋曾被忽视:&quot;你若曾是江南采莲的女子,我比是你皓腕下错过的那一朵。&quot;&nbsp;<br>这爱恋含着埋怨:&quot;你若曾是那逃学的顽童,我必是从你袋中掉落的那颗崭新的弹珠,在路旁的草丛里,目送你毫不知情地远去。&quot;&nbsp;<br>这爱恋甘愿牺牲:&quot;你若是面壁的高僧,我必是殿前的那一炷香.焚烧着,陪伴你过一段静穆的时光。&quot;&nbsp;<br>三个并列的意象,均用词精美,格调清新,特别是把相悦者与自己放在不平等的地位,突出了己方的主动与猛烈,极大的增强了情感的穿透力。&nbsp;<br>正因为如此,&quot;今生相逢,总觉得有些前缘未了,却又很恍惚,无法仔细地去辨认,无法一一地向你说出。&quot;这无法分辨,无法述说之情,就起了如幻似梦,似有若无的作用。<br>也因为将此生与前生交错描写,给我的感觉是又远又近,远近界限难以划分,现实与理想难以划分,心相与理性难以划分。&nbsp;<br>]]></description></item>
</channel>
</rss>