<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>vs.net</title><link>http://blog.vckbase.com/jim97/category/883.html</link><description>有关c#,c++和vb.net等</description><managingEditor>木子的blog</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>木子的blog</dc:creator><title>各种加密小结(asp/vb)</title><link>http://blog.vckbase.com/jim97/articles/25419.html</link><pubDate>Thu, 12 Apr 2007 06:47:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/25419.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/25419.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/25419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/25419.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/25419.html</trackback:ping><description>&lt;P&gt;function encrypt(sStr,sFlag)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i=1 to len(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; chr(asc(mid(sStr,i,2))+i)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; encrypt = texts&lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;function decrypt(sStr,sFlag)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i=1 to len(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; chr(asc(mid(sStr,i,2))-i)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; decrypt=texts&lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;function encryptBIG(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim ch&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i=1 to len(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch=mid(sStr,i,1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if asc(ch)&amp;gt;45126 and asc(ch)&amp;lt;63487 then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; chr(45127+63486+asc(ch))&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; ch&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; encryptBIG=texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.write asc(ch)&lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;function encryptNew(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i=1 to len(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; chr((asc(mid(sStr,i,1)) And &amp;amp;HFFFF&amp;amp; ) +i)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; encryptNew= texts&lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;function decryptNew(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim texts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i=1 to len(sStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texts=texts &amp;amp; chr((asc(mid(sStr,i,1)) And &amp;amp;HFFFF&amp;amp;)&amp;nbsp; -i)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; decryptNew= texts&lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'加密 &lt;BR&gt;function encryptNew2(venshop) &lt;BR&gt;&amp;nbsp;dim&amp;nbsp; vena &lt;BR&gt;for i=1 to len(venshop) &lt;BR&gt;&amp;nbsp;if mid(venshop,i,1)&amp;lt;&amp;gt;chr(13) then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ven=asc(mid(venshop,i,1))+5 &lt;BR&gt;&amp;nbsp;&amp;nbsp;if ven&amp;gt;127 or ven&amp;lt;33 then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ven=ven-95 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if &lt;BR&gt;&amp;nbsp;&amp;nbsp;vena=vena&amp;amp;chr(ven) &lt;BR&gt;&amp;nbsp;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;vena=vena &amp;amp;"＋" &lt;BR&gt;&amp;nbsp;end if &lt;BR&gt;next &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vencoded=vena &lt;BR&gt;end function &lt;/P&gt;
&lt;P&gt;'解密 &lt;BR&gt;function decryptNew2(venshop) &lt;BR&gt;&amp;nbsp;&amp;nbsp; dim&amp;nbsp; vena &lt;BR&gt;for i=1 to len(venshop) &lt;BR&gt;&amp;nbsp;if mid(venshop,i,1)&amp;lt;&amp;gt;"＋" then &lt;BR&gt;&amp;nbsp;&amp;nbsp;ven=asc(mid(venshop,i,1))-5 &lt;BR&gt;&amp;nbsp;&amp;nbsp;if ven&amp;gt;126 then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ven=ven-95 &lt;BR&gt;&amp;nbsp;&amp;nbsp;elseif ven&amp;lt;32 then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ven=ven+95 &lt;BR&gt;&amp;nbsp;&amp;nbsp;end if &lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vena=vena&amp;amp;chr(ven) &lt;BR&gt;&amp;nbsp;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;vena=vena&amp;amp;chr(13) &lt;BR&gt;&amp;nbsp;end if &lt;BR&gt;next &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vencode=vena &lt;BR&gt;end function&lt;/P&gt;
&lt;P&gt;'**************************************************************&lt;BR&gt;'Description: 加密时以 uncode 码存取,解密时 可用下述解密&lt;BR&gt;'Createdate : 2007-04-10&lt;BR&gt;'CreatedBy: jim&lt;/P&gt;
&lt;P&gt;'UrlEncode 加密,即字符以 urlEncode形式存取来达到加密&lt;BR&gt;Function URLEncode1(deStr) &lt;BR&gt;&amp;nbsp; dim enStr &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enStr=Server.UrlEncode(deStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URLEncode1=enStr &lt;BR&gt;End function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'UrlEncode 解码 &lt;BR&gt;Function URLDecode1(enStr) &lt;BR&gt;dim deStr,strSpecial &lt;BR&gt;dim c,i,v &lt;BR&gt;deStr="" &lt;BR&gt;strSpecial="!""#$%&amp;amp;'()*+,.-_/:;&amp;lt;=&amp;gt;?@[\]^`{|}~%" &lt;BR&gt;for i=1 to len(enStr) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c=Mid(enStr,i,1) &lt;BR&gt;&amp;nbsp;&amp;nbsp; if c="%" then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v=eval("&amp;amp;h"+Mid(enStr,i+1,2)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if inStr(strSpecial,chr(v))&amp;gt;0 then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deStr=deStr&amp;amp;chr(v) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=i+2 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v=eval("&amp;amp;h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deStr=deStr &amp;amp; chr(v) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=i+5 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if &lt;BR&gt;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if c="+" then &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deStr=deStr&amp;amp;" " &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deStr=deStr&amp;amp;c &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if &lt;BR&gt;&amp;nbsp;&amp;nbsp; end if &lt;BR&gt;next &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URLDecode1=deStr &lt;BR&gt;End function&lt;/P&gt;
&lt;P&gt;'********************************************************************&lt;BR&gt;'///////////////////////////////////////////////////////////////////&lt;BR&gt;'Description:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.采用5位固定原始密钥,由注册表读取&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.由原始密钥生成加密密钥(5*51)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.将加密密钥对明文加密&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;'Createdate : 2007-04-12&lt;BR&gt;'CreatedBy: jim&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Function URLEncode(deStr) &lt;BR&gt;&amp;nbsp; dim enStr &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enStr=Server.UrlEncode(encryptNew3(deStr))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URLEncode=enStr &lt;BR&gt;End function&lt;/P&gt;
&lt;P&gt;Function URLDecode(enStr) &lt;BR&gt;&amp;nbsp; dim deStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deStr=DecryptNew3(enStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URLDecode=deStr &lt;BR&gt;End function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'异或加密&lt;BR&gt;Function encryptNew3(strCryptThis)&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim strChar, iKeyChar, iStringChar, i&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; '原始密钥&lt;BR&gt;&amp;nbsp;&amp;nbsp; strOrigialKey=Application("OrigalKey")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '加密密钥&amp;nbsp;&amp;nbsp;&amp;nbsp; 固定长为5位,生成加密密钥长为255&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strFullKey=CreateFullKey(strOrigialKey,51)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; for i = 1 to Len(strCryptThis)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iKeyChar = Asc(mid(strFullKey,i,1))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iStringChar = Asc(mid(strCryptThis,i,1))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iCryptChar = iKeyChar Xor iStringChar&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strEncrypted =&amp;nbsp; strEncrypted &amp;amp; Chr(iCryptChar)&lt;BR&gt;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp; EnCrypt = strEncrypted&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;'异或解密&lt;BR&gt;Function DecryptNew3(strEncrypted)&lt;BR&gt;Dim strChar, iKeyChar, iStringChar, i&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;'原始密钥&lt;BR&gt;strOrigialKey=Application("OrigalKey")&lt;/P&gt;
&lt;P&gt;'加密密钥&amp;nbsp;&amp;nbsp;&amp;nbsp; 固定长为5位,生成加密密钥长为255&lt;BR&gt;&amp;nbsp;strFullKey=CreateFullKey(strOrigialKey,51)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; for i = 1 to Len(strEncrypted)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iKeyChar = (Asc(mid(strFullKey,i,1)))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iStringChar = Asc(mid(strEncrypted,i,1))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iDeCryptChar = iKeyChar Xor iStringChar&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strDecrypted =&amp;nbsp; strDecrypted &amp;amp; Chr(iDeCryptChar)&lt;BR&gt;&amp;nbsp;&amp;nbsp; next&lt;BR&gt;&amp;nbsp;&amp;nbsp; DeCrypt = strDecrypted&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'由原始密钥生成固定加密密钥&lt;BR&gt;Function CreateFullKey(strOrigal,strlength)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i,UB&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Temp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Temp = ""&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 1 To strlength&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Temp = Temp &amp;amp; strOrigal&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateFullKey= Temp&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;'//////////////////////////////////////////////////////////////////&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/25419.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>静态页中利用AJAX.NET实现无刷新页面</title><link>http://blog.vckbase.com/jim97/articles/23510.html</link><pubDate>Thu, 14 Dec 2006 02:54:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/23510.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/23510.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/23510.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/23510.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/23510.html</trackback:ping><description>&lt;P&gt;&lt;FONT color=#05006c&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;一、 导言(&lt;A href="http://www.webjx.com/htmldata/2006-04-24/1145839632.html"&gt;http://www.webjx.com/htmldata/2006-04-24/1145839632.html&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;　　我们知道，ASP.net应用程序事实是在服务器上运行的，用户的请求要不断地送往远程的服务器，服务器执行完本地的程序后把重新装载页面再发送客户端。所以就出现了不断刷新的问题，页面不断闪烁。用户不厌其烦，运行效率也大大4降低，服务器的负荷加重。事实，客户端的请求在某一时刻只是通过向 Web 服务器提交新的请求来检索对用户输入所做的响应。这种情况下，开发人员可以使用 JavaScript 在客户端上加载所有响应，从而提供更好的用户体验。遗憾的是，在很多情况下，不必将所有响应都返回或加载到 JavaScript 要更好，只返回所要的结果，执行过程仍然在服务器上运行。AJAX 提供了一种新的中间选择，能够在维持及时响应和灵活性的同时利用基于服务器的应用程序。&lt;BR&gt;&lt;BR&gt;　　AJAX依靠服务器作为中介来分发和处理请求。为了完成这项工作，.net封装类依赖于客户端的请求对象，而xmlHttpRequest对象被大部分的浏览器支持，因此使用这个对象是一个不错的解决方案。&lt;BR&gt;&lt;BR&gt;　　因此，为了实现不刷新的页面，我们的客户端页面做成静态页面。静态页面通过Ajax.net调用.net类的方法。这是一种最简洁又高效的解决方案。&lt;BR&gt;&lt;BR&gt;　　&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;二、 如何应用Ajax.net&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;　　1.在工程中引入Ajax.dll文件。&lt;BR&gt;&lt;BR&gt;　　Ajax.dll是微软开发的应用在asp.net上的一个类库文件。该类库封装了XmlHttpRequest请求服务器的实现细节，是Ajax知识应用在asp.net平台上的解决技术。在.net项目中，添加上对其的引用，然后就可以开始使用ajax.dll封装进行开发了。&lt;BR&gt;&lt;BR&gt;　　2.在web.config中设置HttpHandle&lt;BR&gt;&lt;BR&gt;　　为了使其可以工作，第一步必须做的是在web.config中安装设置封装包的HttpHandle，不去详细解释HttpHandle是如何工作的，我们只需要了解他们可以用来处理asp.net请求。例如，所有的目的为*.aspx的请求可以通过System.Web.UI.PageHandlerFactory类发送到控制句柄，简单的说，我们把任何向ajax/*.ashx的请求发送到Ajax.PageHandlerFactory的请求处理句柄。&lt;BR&gt;&lt;BR&gt;　　3.编写服务端函数&lt;BR&gt;&lt;BR&gt;　　现在我们编写服务器端函数，他们可以被客户端异步的调用。尽管现在还不能支持全部的返回类型，我们仍坚持服务器端添加功能。在codebehind文件的页面类里，添加下面的方法：&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public int ServerSideAdd(int firstNumber, int secondNumber)&lt;BR&gt;{&lt;BR&gt;　return firstNumber + secondNumber;&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　注意，这个函数有Ajax.AjaxMethod()定制属性，属性服务会告知ajax封装类为此方法创建一个javascript代理，这样才能被客户端调用。 &lt;BR&gt;&lt;BR&gt;　　三、 应用实例(点击下载源码)&lt;BR&gt;&lt;BR&gt;　　我们的应用程序主要是对数据库的操作，数据库的数据通过页面的表格呈现，页面完成增加、删除、更新、查询等功能。更主要的是它是一个通用的并且实现方法极为巧妙的例子。任何页面没有刷新现象并且代码十分精巧。下面的就通过Ajax技术实现这些功能。&lt;BR&gt;&lt;BR&gt;　　&amp;#183;建立工程HttpForAjax，并在您的工程中引入Ajax.dll文件。&lt;BR&gt;&lt;BR&gt;　　&amp;#183;在您的Web.config中加上。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;＜httpHandlers＞&lt;BR&gt;＜add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/＞&lt;BR&gt;＜/httpHandlers＞&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　&amp;#183;建立您的HTML页。&lt;BR&gt;&lt;BR&gt;　　1. 向工程里添加HTML页InfoClass.htm。该页面完成查询、常用工具及数据展现等功能。&lt;BR&gt;&lt;BR&gt;　　页面主要放了四个DIV，一个是树" divTree "。一个是查询区叫"divFindTable"的，一个是工具栏叫&lt;BR&gt;"divToolbar"的，一个是数据区叫"divDataGrid"的。如下图:&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;IMG src="http://www.webjx.com/upfiles/20060424/20060424084536_01.jpg"&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　2. 在 ＜HEAD＞与＜/HEAD＞间加入一些引用如下：&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;＜script src=js/Xml.js＞＜/script＞&lt;BR&gt;＜link href="css/myStyle.css" type="text/css" rel="stylesheet"＞&lt;BR&gt;＜script src="/HttpForAjax/ajax/common.ashx" type="text/javascript"＞＜/script＞&lt;BR&gt;＜script src="/HttpForAjax/ajax/Ttyu.AjaxData,HttpForAjax.ashx" type="text/javascript"＞＜/script＞&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　说明：Xml.js是用javascript写的一些客户端程序。&lt;BR&gt;&lt;BR&gt;　　myStyle.css为样式风格文件。&lt;BR&gt;&lt;BR&gt;　　common.ashx为调用Ajax的公用方法。&lt;BR&gt;&lt;BR&gt;　　HttpForAjax.ashx为下面我们要用Ajax编写的类的引用。其中HttpForAjax为工程的命名空间。&lt;BR&gt;&lt;BR&gt;　　Ttyu.AjaxData为自己开发的类，其中Ttyu为命名空间，AjaxData为类名。&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;　　3. 用javascript编写脚本方法，&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;function Init()&lt;BR&gt;{&lt;BR&gt;　DomTree=new dhtmlXTreeObject(document.getElementById('divTree'),"100%","100%",0);&lt;BR&gt;　DomTree.setImagePath("imgs/");&lt;BR&gt;　DomTree.enableDragAndDrop(true)&lt;BR&gt;　DomTree.setDragHandler(myDragHandler);&lt;BR&gt;　DomTree.setOnClickHandler(SelectTreeNode);&lt;BR&gt;　var s= AjaxData.GetXmlTree().value;&lt;BR&gt;&lt;BR&gt;　DomTree.loadXMLString(s);&lt;BR&gt;　DomTree.openItem("R_1");&lt;BR&gt;　SelectTreeNode("R_1");&lt;BR&gt;　divToolbar.innerHTML=AjaxData.GetToolBarTable(TableName).value;&lt;BR&gt;　divDataGrid.innerHTML=GetTableOuterHTML(TableName); &lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　Init方法通过Ajax的GetXmlTree方法得到树的内容，GetToolBarTable取得工具栏的内容。通过GetTableOuterHTML方法取得物理表tInfoClass的所有数据并通过表格展现出来。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;function Find()&lt;BR&gt;{&lt;BR&gt;　var Table=AjaxData.GetXmlFindTable("年级名称 like '%"+txtName.value +"%'");&lt;BR&gt;　divDataGrid.innerHTML=Table.value;&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　查询方法Find()是通过Ajax的GetXmlFindTable方法按年级名称查询并把结果展现出来。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;function OpenAddWeb()&lt;BR&gt;{&lt;BR&gt;　var RetID =OpenAddWin('InfoClass_edit.aspx?IsAdd=true',370,300);&lt;BR&gt;　if(RetID==-1) return;&lt;BR&gt;　InsertRow(DataGrid1,RetID);&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　OpenAddWeb方法打开InfoClass_edit.aspx页在该页上完成增加数据的功能。如果返回值不为-1则表示有新数据增加的并把数据插入到表格的最后一行。RetID表示最后一行的ID.&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;function OpenEditWeb(ThisCell)&lt;BR&gt;{&lt;BR&gt;　var ID=ThisCell.previousSibling.previousSibling.innerText; &lt;BR&gt;　var RetID =OpenAddWin("InfoClass_edit.aspx?ID="+ID+"&amp;amp;IsAdd=false",370,300);&lt;BR&gt;　if(RetID==-1) return;&lt;BR&gt;　//有更新行&lt;BR&gt;　var CurrRow=ThisCell.parentElement&lt;BR&gt;　SetRowText(CurrRow);&lt;BR&gt;　// SetRowText(CurrRow,RetDataRow);&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　OpenEditWeb方法是当用户点击的单元格后打开InfoClass_edit.aspx页在该页上完成编辑该行数据的功能。如有更新行则把当前行的内容更换..&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;IMG src="http://www.webjx.com/upfiles/20060424/20060424084456_02.jpg"&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　&amp;#183;建立Ajax类。（见文件AjaxData.cs）命名空间为Ttyu，类名为AjaxData。&lt;BR&gt;&lt;BR&gt;　　1. 定义静态变量mDt。mDt是读取到物理表的数据并保存在内存中的数据表对象。我们的主要操作都是靠它完成。定义为静态的是我们不希望反复访问数据库。我们一次性读取，永久使用。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;static public DataTable mDt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　2.定义我们的主要方法。在每个方法的上行加上[Ajax.AjaxMethod()]。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;//得到表TableName的所得数据，以XML字符串返回&lt;BR&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public string GetTableOuterHTML(string TableName)&lt;BR&gt;{&lt;BR&gt;　DataTable dt=db.DB.GetDataTable(TableName);&lt;BR&gt;　mDt=dt;&lt;BR&gt;　return db.GetTableOuterHTML(dt.DefaultView);&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　GetTableOuterHTML方法是由物理表名读取到内存中并通过其视图得到以XML格式的Table。这里我们读取后保存在mDt中。用数据表的视图是我们的查询也通过该方法呈现数据。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;//得到表TableName的所得数据，以XML字符串返回&lt;BR&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public string GetXmlFindTable(string RowFilter)&lt;BR&gt;{ &lt;BR&gt;　DataTable Dt=mDt;&lt;BR&gt;　DataView dv=Dt.DefaultView;&lt;BR&gt;　dv.RowFilter=RowFilter;&lt;BR&gt;　return db.GetTableOuterHTML(dv);&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　GetXmlFindTable是按查询条件从mDt中查询到数据并返回给客户端。 &lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;//删除行&lt;BR&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public bool DeleteRow(string TableName,int ID)&lt;BR&gt;{ &lt;BR&gt;　string SQL = "delete from " + TableName + " where ID=" + ID;&lt;BR&gt;　bool isSuccess= db.DB.ExecuteSQL(SQL);&lt;BR&gt;　if(isSuccess)&lt;BR&gt;　{&lt;BR&gt;　　DataRow dr=mDt.Select("ID="+ID)[0];&lt;BR&gt;　　mDt.Rows.Remove(dr);&lt;BR&gt;　}&lt;BR&gt;　return isSuccess;&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　DeleteRow是删除物理表的一行，并在mDt中也同步地删除。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;//把数据行转化为数组返回&lt;BR&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public object GetDataRow(int iID)&lt;BR&gt;{ &lt;BR&gt;　DataRow dr=mDt.Select("ID="+iID)[0]; &lt;BR&gt;　return dr.ItemArray;//数字类型不能为空 &lt;BR&gt;}&lt;BR&gt;GetDataRow是从内存表mDt得到ID号为iID的一行，通过数组方式返回给客户端。&lt;BR&gt;[Ajax.AjaxMethod()]&lt;BR&gt;public string GetToolBarTable(string TableName)&lt;BR&gt;{&lt;BR&gt;　return db.GetToolBarTable(TableName);&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　GetToolBarTable是组织成工具栏的内容返回给客户端。&lt;BR&gt;&lt;BR&gt;　　&amp;#183;建立业务数据类ttyuPKData。（见文件ttyuPKData.cs）命名空间为Ttyu，类名为ttyuPKData。&lt;BR&gt;&lt;BR&gt;　　该类中有些常用的方法。&lt;BR&gt;&lt;BR&gt;　　public bool InsertDataRow(DataRow dr,int BeginColumnIndex)为向物理表中把数据行dr插入，BeginColumnIndex表示从开始的列插入。&lt;BR&gt;&lt;BR&gt;　　public bool UpdateDataRow(DataRow dr,int BeginColumnIndex,string Filter) 为向物理表中把数据行dr的数据更新，BeginColumnIndex表示开始更新的列。Filter表示所要更新的行。是一筛选条件。&lt;BR&gt;&lt;BR&gt;　　public string GetTableOuterHTML(DataView dv)是个通用的把数据视图展现为Table的方法。并通过class定义样式。&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code&gt;&lt;STRONG&gt;//由一个数据视图得到该表的表头及所有数据，以XML格式的表字符串返回&lt;BR&gt;public string GetTableOuterHTML(DataView dv)&lt;BR&gt;{&lt;BR&gt;StringBuilder ret = new StringBuilder();&lt;BR&gt;ret.Append("＜table class='DataGrid' id='DataGrid1' cellspacing=1 cellpadding=4＞" );&lt;BR&gt;ret.Append("＜tr class='DataGridHeaderStyle'＞"); &lt;BR&gt;ret.Append("＜td width='5'＞ ＜input type='checkbox' onclick='SelectAll(this)'＞＜/td＞ ");&lt;BR&gt;//标题&lt;BR&gt;foreach(System.Data.DataColumn dc in dv.Table.Columns )&lt;BR&gt;{ &lt;BR&gt;if(dc.Ordinal==0) //该列隐藏&lt;BR&gt;ret.Append("＜td class='IDColumn'＞"+dc.ColumnName+"＜/td＞");&lt;BR&gt;else&lt;BR&gt;ret.Append("＜td＞"+dc.ColumnName+"＜/td＞");&lt;BR&gt;}&lt;BR&gt;ret.Append("＜/tr＞");&lt;BR&gt;//这时是视图中筛选后的数据 &lt;BR&gt;foreach(DataRowView drv in dv)&lt;BR&gt;{ &lt;BR&gt;DataRow dr=drv.Row;//dv.Table.Rows[i];&lt;BR&gt;ret.Append(GetRowOuterHTML(dr));&lt;BR&gt;}&lt;BR&gt;ret.Append("＜/table＞");&lt;BR&gt;return ret.ToString ();&lt;BR&gt;}&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;　　&amp;#183;建立页面数据编辑类（见文件PageEdit.cs）命名空间为Ttyu.Web，类名为PageEdit。&lt;BR&gt;&lt;BR&gt;　　该类是个通用的通过继承的技巧实现了所有编辑页(包括增加、修改数据)功能的统一处理。页中不需要一行代码。&lt;BR&gt;&lt;BR&gt;　　结论&lt;BR&gt;&lt;BR&gt;　　Ajax技术可以给客户端提供丰富的客户体验，而ajax.net为您容易的实现这样强大的功能提供了可能。静态页面是不出现刷新问题的。我们的静态页面通过Ajax完全可与asp.net结合起来。通过.net进行后台的管理。前台通过javascript调用。这样完美的结合是解决问题的最佳方法。 &lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV align=right&gt;&lt;STRONG&gt;作者：&lt;FONT color=#ff0000&gt;黎宇&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;来源：&lt;FONT color=#ff0000&gt;天极开发&lt;/FONT&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/23510.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>html在线编辑器的调用方法---原理和实例</title><link>http://blog.vckbase.com/jim97/articles/23391.html</link><pubDate>Thu, 07 Dec 2006 05:41:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/23391.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/23391.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/23391.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/23391.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/23391.html</trackback:ping><description>来自51js.com&lt;BR&gt;收藏-2004&lt;BR&gt;HTML在线编辑器不需要懂得使用Dreamweaver，会用Word就会使用此编辑器，在文章系统或者是新闻系统需要文字编辑的web程序中非常实用。&lt;BR&gt;但是如何将html编辑器嵌入到web页中和怎么取得里面的数据呢？！&lt;BR&gt;首先我们假定我们所要调用得HTML在线编辑器放在一个单独得页面中，文件名是gledit.htm上传图片的前台页面：http://www.jfinfo.com/room/admin/img_upload.asp。&lt;BR&gt;HTML在线编辑器有两种基本调用方法&lt;BR&gt;一、使用object调用(http://www.jfinfo.com/room/admin/editor.asp):&lt;BR&gt;1、怎么在web页中嵌入html编辑器： 我们在需要嵌入得位置加入以下html代码：&amp;lt;object id=doc_html data="gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;其中object标签里面得data后面接得数据就是我们所要调用得在线编辑器页得路径，id就是我们调用object得id，后面取编辑器中得数据时就要用到这个id。Width和height就是编辑器得高度和宽度了。&lt;BR&gt;2、怎么取得html编辑器中的数据：所有需要提交的内容我们都是放在一个表单里面，同样利用object调用的编辑器也放在这个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name=d"content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，因为在asp或者jsp，php中不能直接获取表单中的object的内容，所以我们必须借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;&amp;lt;script language="javascript"&amp;gt;&lt;BR&gt;function CheckForm()&lt;BR&gt;{&lt;BR&gt;document.form1.content.value=document.form1.doc_html.value;&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;form method="post" action="add_news_save.asp" onsubmit="CheckForm()" name="form1"&amp;gt;&lt;BR&gt;&amp;lt;object id=doc_html name= doc_html style="LEFT: 0px; TOP: 0px" data=" gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;这样在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;3、怎么在文本编辑器中加入上传本机图片到html在线编辑器中：首先我们使得在点击插入图片的按钮时弹出一个上传图片的窗口，我们利用自己写的程序来实现上传本机图片到服务器上，然后我们需要记录图片的路径，然后通过html在线编辑器的值中加入显示图片的html标签。详细说明及代码如下：&lt;BR&gt;在编辑器中我们在插入图片的按钮上加入事件onclick="window.open('img_upload.asp','img_upload','width=481 height=190')"&amp;gt;在'img_upload.asp'中我们将提交的图片上传到服务器制定目录然后记录图片路径&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;var src='&amp;lt;%="upload/"&amp;amp;newname%&amp;gt;';&lt;BR&gt;opener.form1. doc_html.value +="&amp;lt;img border=0 src="+src+"&amp;gt;";&lt;BR&gt;window.close();&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;这样就实现了简单的将上传的图片插入到编辑器中。&lt;BR&gt;4、怎么在编辑修改文章的时候调用HTML在线编辑器来修改数据：当我们把在添加的时候将HTML在线编辑器来修改数据提交到数据库后我们还需要能将数据库的内容用HTML在线编辑器来修改数据。首先我们在表单中加入一个隐藏区域来放置数据库中的内容，例如&amp;lt;TEXTAREA style="display:none" NAME="content" ROWS="20" COLS="70"&amp;gt;&amp;lt;%= rs("Content")%&amp;gt;&amp;lt;/TEXTAREA&amp;gt;，要注意这里我们用隐藏的textarea而不能用隐藏的input，因为数据里面可能包含了回车换行，所以如果我们使用&amp;lt;INPUT TYPE="hidden" name=content value="&amp;lt;%=(rs("Content")%&amp;gt;"&amp;gt;很可能因为&amp;lt;%=(rs("Content")%&amp;gt;有换行而出现HTML错误（value=后面接的数据必须保证是在一行，否则出错）。然后按照前面介绍的方法使用object调用HTML在线编辑器，方法和代码同上，现在我们要做的其实就是提交时候的逆过程，我们只要将隐藏文本区域的内容复制到HTML在线编辑器就可以了，在这里我们在body里面加上&amp;lt;body onload="document.form1. doc_html.value=document.form1.content.value"&amp;gt;，这样在页面装载完的时候就可以将数据库中的内容放入HTML在线编辑器中编辑了，提交过程和上面介绍的一样，在此就不赘述了。&lt;BR&gt;&lt;BR&gt;二、使用iframe调用（http://qxd.5599.net/by/source/article/manage/gledit.htm ）&lt;BR&gt;1、 怎么在web页中嵌入：我们在需要嵌入得位置加入以下html代码：&amp;lt;IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"&amp;gt;&amp;lt;/IFRAME&amp;gt;其中"src="后面接得数据就是我们所要调用得在线编辑器页得路径，id就是我们调用IFRAME得id，Width和height就是编辑器得高度和宽度了。&lt;BR&gt;2、 怎么取得html编辑器中的数据：同样所有需要提交的内容我们都是放在一个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name="content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，我们借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;function subchk(cmd)&lt;BR&gt;{&lt;BR&gt;document.form1.content.value= window.content_html.getHTML();&lt;BR&gt;}&lt;BR&gt;&amp;lt;/SCRIPT&amp;gt;&lt;BR&gt;&amp;lt;FORM METHOD=POST ACTION="Article_add_save.gl" name="form1" onsubmit=" subchk()"&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"&amp;gt;&amp;lt;/IFRAME&amp;gt;&lt;BR&gt;&amp;lt;/FORM&amp;gt;&lt;BR&gt;在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;2、怎么取得html编辑器中的数据：所有需要提交的内容我们都是放在一个表单里面，同样利用object调用的编辑器也放在这个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name="content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，因为在asp或者jsp，php中不能直接获取表单中的object的内容，所以我们必须借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;&amp;lt;script language="javascript"&amp;gt;&lt;BR&gt;function CheckForm()&lt;BR&gt;{&lt;BR&gt;document.form1.content.value=document.form1.doc_html.value;&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;form method="post" action="add_news_save.asp" onsubmit="CheckForm()" name="form1"&amp;gt;&lt;BR&gt;&amp;lt;object id=doc_html name= doc_html style="LEFT: 0px; TOP: 0px" data=" gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;这样在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;3、怎么在文本编辑器中加入上传本机图片到html在线编辑器中：首先我们使得在点击插入图片的按钮时弹出一个上传图片的窗口，我们利用自己写的程序来实现上传本机图片到服务器上，然后我们需要记录图片的路径，然后通过在调用html在线编辑器的web页中写一个函数在光标的位置插入显示图片的html标签。详细说明及代码如下：&lt;BR&gt;在编辑器中我们在插入图片的按钮上加入事件onclick="window.open('img_upload.asp','img_upload','width=481 height=190')"&amp;gt;在调用编辑器的页面中我们定义好插入html代码到编辑器的函数&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;function insertHtml(HtmlCode)&lt;BR&gt;{&lt;BR&gt;var win=window.content_html.idEditbox.document;//其中编辑区域是gledit.htm中的一个iframe，id是idEditbox&lt;BR&gt;window.content_html.idEditbox.focus();//是编辑器获得焦点，防止代码插入在编辑器外地方&lt;BR&gt;win.selection.createRange().pasteHTML(HtmlCode)//在光标的位置插入html代码&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;在处理上传图片的文件中，我们调用父窗口的函数插入html代码&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;var src='&amp;lt;%=" upload/"&amp;amp;newname%&amp;gt;';&lt;BR&gt;var htmlcodes;&lt;BR&gt;htmlcodes = "&amp;lt;img src='"+src+"' alt='&amp;lt;%=theForm("alt")%&amp;gt;' align='&amp;lt;%=theForm("align")%&amp;gt;' border='&amp;lt;%=theForm("border")%&amp;gt;' hspace='&amp;lt;%=theForm("hspace")%&amp;gt;' vspace='&amp;lt;%=theForm("vspace")%&amp;gt;'&amp;gt;";&lt;BR&gt;opener.insertHtml(htmlcodes)&lt;BR&gt;window.close();&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;这样就实现了简单的将上传的图片插入到编辑器中。&lt;BR&gt;4、 怎么在编辑修改文章的时候调用HTML在线编辑器来修改数据：当我们把在添加的时候将HTML在线编辑器来修改数据提交到数据库后我们还需要能将数据库的内容用HTML在线编辑器来修改数据。首先我们在表单中加入一个隐藏区域来放置数据库中的内容，例如&amp;lt;TEXTAREA style="display:none" NAME="content" ROWS="20" COLS="70"&amp;gt;&amp;lt;%= rs("Content")%&amp;gt;&amp;lt;/TEXTAREA&amp;gt;，在这里我们在调用编辑器的页面中的body标签里面加上&amp;lt;BODY onload="insertHtml(document.form1.content.value)"&amp;gt;其中inserthtml()就是我们定义好插入html代码到编辑器的函数（具体参考插入图片的代码）。这样在页面装载完的时候就可以将数据库中的内容放入HTML在线编辑器中编辑了，提交过程和上面介绍的一样，在此就不赘述了。&lt;img src ="http://blog.vckbase.com/jim97/aggbug/23391.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>在net中DataGrid中显示带有主次结构的数据!</title><link>http://blog.vckbase.com/jim97/articles/18099.html</link><pubDate>Thu, 02 Mar 2006 02:47:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/18099.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/18099.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/18099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/18099.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/18099.html</trackback:ping><description>&lt;P&gt;大家在实际工作中有没有遇到要在DataGrid中显示带有主次结构的数据呢？如果你对ADO.NET和SQL Server2000熟悉的话，我们下面就举一个利用VS.NET自带的示例数据库Northwind和VB.NET来说明如何实现这一目标。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先，我们先准备要显示的带有主次结构的数据。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下面就是要绑定到HierarchicalDataGrid.aspx的VB.NET代码文件HierarchicalDataGrid.aspx.vb的内容：&lt;/P&gt;
&lt;P&gt;Imports System.Data.SqlClient&lt;/P&gt;
&lt;P&gt;Public Class HierarchicalDataGrid&lt;BR&gt;Inherits System.Web.UI.Page&lt;BR&gt;Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid&lt;/P&gt;
&lt;P&gt;#Region " Web Form Designer Generated Code "&lt;/P&gt;
&lt;P&gt;'下面的调用对Web Form设计器来说是必须的&lt;BR&gt;&amp;lt;System.Diagnostics.DebuggerStepThrough()&amp;gt; Private Sub InitializeComponent()&lt;/P&gt;
&lt;P&gt;End Sub&lt;/P&gt;
&lt;P&gt;Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init&lt;BR&gt;'CODEGEN: 这个方法是为Web Form设计器调用的&lt;BR&gt;'不要用代码编辑器改变这里.&lt;BR&gt;InitializeComponent()&lt;BR&gt;End Sub&lt;/P&gt;
&lt;P&gt;#End Region&lt;/P&gt;
&lt;P&gt;Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;/P&gt;
&lt;P&gt;'打开数据库连接&lt;BR&gt;Dim OrdersConnection As New SqlConnection("Server=(local)\NetSDK;Database=northwind;Trusted_Connection=yes")&lt;/P&gt;
&lt;P&gt;'得到订单和订单详细信息&lt;BR&gt;Dim OrderAdapter As New SqlDataAdapter("Select * from Orders; select OrderID ,Products.ProductName,[order Details].Unitprice,[order Details].Quantity,[order Details].discount from [order Details],Products where [Order Details].ProductId=Products.ProductID", OrdersConnection)&lt;/P&gt;
&lt;P&gt;'创建并填充DataSet对象&lt;BR&gt;Dim OrderDataSet As New DataSet()&lt;/P&gt;
&lt;P&gt;OrderAdapter.Fill(OrderDataSet)&lt;/P&gt;
&lt;P&gt;'设定表名字&lt;BR&gt;OrderDataSet.Tables(0).TableName = "Orders"&lt;BR&gt;OrderDataSet.Tables(1).TableName = "Order Details"&lt;/P&gt;
&lt;P&gt;'在基于OrderID字段的两个表之间建立父子关系&lt;BR&gt;Dim Parent As DataColumn = OrderDataSet.Tables("Orders").Columns("OrderID")&lt;BR&gt;Dim Child As DataColumn = OrderDataSet.Tables("Order Details").Columns("OrderID")&lt;/P&gt;
&lt;P&gt;Dim OrderRelation As DataRelation = New DataRelation("OrderRelation", Parent, Child, False)&lt;/P&gt;
&lt;P&gt;'为DataSet添加关系&lt;BR&gt;OrderDataSet.Relations.Add(OrderRelation)&lt;/P&gt;
&lt;P&gt;'把DataGrid绑定到Orders表&lt;BR&gt;DataGrid1.DataSource = OrderDataSet.Tables("Orders").DefaultView&lt;BR&gt;DataBind()&lt;/P&gt;
&lt;P&gt;End Sub&lt;/P&gt;
&lt;P&gt;Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound&lt;BR&gt;e.Item.Cells(0).BackColor = System.Drawing.Color.Ivory&lt;BR&gt;End Sub&lt;BR&gt;End Class &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在HierarchicalDataGrid.aspx中，我们为DataGrid1建立模板列，并把另外一个DataGrid嵌入到这个模板列，父一级的DataGrid用来显示主记录，比如：订单。子一级DataGrid用来显示详细信息，比如：订单的详细信息。我们这样为子DataGrid动态指定数据源：&lt;/P&gt;
&lt;P&gt;DataSource='&amp;lt;%# Ctype(Container.DataItem,DataRowView).CreateChildView("OrderRelation") %&amp;gt;'&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上面这句就是实现显示主次关系数据的关键。根据当前父一级记录，DataRowView.CreateChildView利用前面创建的关系的名字作为参数获得子记录，并把它绑定到子DataGrid上。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下面就是我们要显示的ASPX页面的代码，HierarchicalDataGrid.aspx：&lt;/P&gt;
&lt;P&gt;&amp;lt;%@ Page Language="vb" AutoEventWireup="false" Codebehind="HierarchicalDataGrid.aspx.vb" Inherits="HierarchicalDataGrid.HierarchicalDataGrid" %&amp;gt;&lt;BR&gt;&amp;lt;%@ Import namespace="System.Data"%&amp;gt;&lt;BR&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&amp;gt;&lt;BR&gt;&amp;lt;HTML&amp;gt;&lt;BR&gt;&amp;lt;HEAD&amp;gt;&lt;BR&gt;&amp;lt;title&amp;gt;显示主次关系数据的例子&amp;lt;/title&amp;gt;&lt;BR&gt;&amp;lt;meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"&amp;gt;&lt;BR&gt;&amp;lt;meta name="CODE_LANGUAGE" content="Visual Basic 7.0"&amp;gt;&lt;BR&gt;&amp;lt;meta name="vs_defaultClientScript" content="JavaScript"&amp;gt;&lt;BR&gt;&amp;lt;meta name="vs_targetSchema" content="&lt;A href="http://schemas.microsoft.com/intellisense/ie5" target=_blank&gt;&lt;A href="http://schemas.microsoft.com/intellisense/ie5" target=_blank&gt;http://schemas.microsoft.com/intellisense/ie5&lt;/A&gt;&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;lt;/HEAD&amp;gt;&lt;BR&gt;&amp;lt;body&amp;gt;&lt;BR&gt;&amp;lt;form id="FrmDataGrid" method="post" runat="server"&amp;gt;&lt;BR&gt;&amp;lt;P align="center"&amp;gt;&lt;BR&gt;&amp;lt;asp:DataGrid id="DataGrid1" BorderColor="#0099FF" runat="server" ShowHeader="False" Width="470px" CellPadding="0" CellSpacing="0" AutoGenerateColumns="False" BorderWidth="2px"&amp;gt;&lt;BR&gt;&amp;lt;Columns&amp;gt;&lt;BR&gt;&amp;lt;asp:TemplateColumn&amp;gt;&lt;BR&gt;&amp;lt;ItemTemplate&amp;gt;&lt;BR&gt;&amp;lt;TABLE cellSpacing="0" cellPadding="0" width="100%" border="0"&amp;gt;&lt;BR&gt;&amp;lt;TR&amp;gt;&lt;BR&gt;&amp;lt;TD bgColor="#FF6600"&amp;gt;&amp;lt;B&amp;gt;订单号：&lt;BR&gt;&amp;lt;%# DataBinder.Eval(Container.DataItem, "OrderID") %&amp;gt;&lt;BR&gt;&amp;lt;/B&amp;gt;&lt;BR&gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;/TR&amp;gt;&lt;BR&gt;&amp;lt;TR&amp;gt;&lt;BR&gt;&amp;lt;TD align="right"&amp;gt;&lt;BR&gt;&amp;lt;asp:DataGrid id=DataGrid2 runat="server" AutoGenerateColumns="False" BorderColor="#33FF33" DataKeyField="OrderID" DataSource='&amp;lt;%# Ctype(Container.DataItem,DataRowView).CreateChildView("OrderRelation") %&amp;gt;'&amp;gt;&lt;BR&gt;&amp;lt;HeaderStyle Font-Bold="True" ForeColor="#CC0066" BackColor="#FFCCFF"&amp;gt;&amp;lt;/HeaderStyle&amp;gt;&lt;BR&gt;&amp;lt;Columns&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn Visible="False" DataField="OrderID" ReadOnly="True"&amp;gt;&amp;lt;/asp:BoundColumn&amp;gt;&lt;BR&gt;&amp;lt;asp:TemplateColumn HeaderText="产品名称"&amp;gt;&lt;BR&gt;&amp;lt;HeaderStyle Width="300px"&amp;gt;&amp;lt;/HeaderStyle&amp;gt;&lt;BR&gt;&amp;lt;ItemTemplate&amp;gt;&lt;BR&gt;&amp;lt;%# DataBinder.Eval(Container.DataItem, "ProductName") %&amp;gt;&lt;BR&gt;&amp;lt;/ItemTemplate&amp;gt;&lt;BR&gt;&amp;lt;/asp:TemplateColumn&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn DataField="UnitPrice" HeaderText="单价"&amp;gt;&amp;lt;/asp:BoundColumn&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn DataField="Quantity" HeaderText="数量"&amp;gt;&amp;lt;/asp:BoundColumn&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn DataField="Discount" HeaderText="折扣"&amp;gt;&amp;lt;/asp:BoundColumn&amp;gt;&lt;BR&gt;&amp;lt;/Columns&amp;gt;&lt;BR&gt;&amp;lt;/asp:DataGrid&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;/TR&amp;gt;&lt;BR&gt;&amp;lt;/TABLE&amp;gt;&lt;BR&gt;&amp;lt;/ItemTemplate&amp;gt;&lt;BR&gt;&amp;lt;/asp:TemplateColumn&amp;gt;&lt;BR&gt;&amp;lt;/Columns&amp;gt;&lt;BR&gt;&amp;lt;/asp:DataGrid&amp;gt;&amp;lt;/P&amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;&amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/HTML&amp;gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#6666ff&gt;&amp;nbsp;以上copy网友注意:&amp;nbsp;&lt;BR&gt;&amp;nbsp;1.在ASPX页面html代码中要加入 &amp;lt;%@ Import namespace="System.Data"%&amp;gt; 否则编译不通过!&lt;BR&gt;&amp;nbsp;2.修改成c#时要修改 CType转换类型.便可!&lt;BR&gt;&lt;/FONT&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;%@ Import namespace="System.Data" %&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/18099.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>如何控制DataGrid里的内容换行与不换行？</title><link>http://blog.vckbase.com/jim97/articles/16472.html</link><pubDate>Mon, 26 Dec 2005 02:11:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/16472.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/16472.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/16472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/16472.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/16472.html</trackback:ping><description>&amp;lt;%@ Page Language="C#" AutoEventWireup="True" %&amp;gt;&lt;BR&gt;&amp;lt;%@ Import Namespace="System.Data" %&amp;gt;&lt;BR&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;lt;script runat="server"&amp;gt;&lt;BR&gt;int start_index;&lt;BR&gt;ICollection CreateDataSource() &lt;BR&gt;{&lt;BR&gt;DataTable dt = new DataTable();&lt;BR&gt;DataRow dr;&lt;BR&gt;&lt;BR&gt;dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));&lt;BR&gt;dt.Columns.Add(new DataColumn("StringValue", typeof(string)));&lt;BR&gt;dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));&lt;BR&gt;&lt;BR&gt;for (int i = start_index; i &amp;lt; start_index + ItemsGrid.PageSize; i++) &lt;BR&gt;{&lt;BR&gt;dr = dt.NewRow(); &lt;BR&gt;dr[0] = i;&lt;BR&gt;dr[1] = @"我是中文文字，I am English words，我不想换行，&lt;BR&gt;I don't wanna have new lines，欢迎访问 &lt;BR&gt;&amp;lt;a href='http://dotnet.aspx.cc/'&amp;gt;http://dotnet.aspx.cc/&amp;lt;/a&amp;gt;，&lt;BR&gt;有好料啊：）";&lt;BR&gt;dr[2] = 1.23 * (i+1);&lt;BR&gt;&lt;BR&gt;dt.Rows.Add(dr);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;DataView dv = new DataView(dt);&lt;BR&gt;return dv;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;void Page_Load(Object sender, EventArgs e) &lt;BR&gt;{&lt;BR&gt;//对于没有数字的内容，下面这行完全满足要求，但加了数字就不行，必须调用OnItemDataBound&lt;BR&gt;ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");&lt;BR&gt;&lt;BR&gt;//下面这行是自动换行&lt;BR&gt;//ItemsGrid.Attributes.Add("style","word-break:break-all;word-wrap:break-word");&lt;BR&gt;&lt;BR&gt;if (!IsPostBack)&lt;BR&gt;{&lt;BR&gt;BindGrid(); &lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;void BindGrid() &lt;BR&gt;{&lt;BR&gt;ItemsGrid.DataSource=CreateDataSource();&lt;BR&gt;ItemsGrid.DataBind(); &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;void Item_DataBound(Object sender, DataGridItemEventArgs e) &lt;BR&gt;{&lt;BR&gt;if( e.Item.ItemType == ListItemType.Item ||&lt;BR&gt;e.Item.ItemType == ListItemType.AlternatingItem)&lt;BR&gt;e.Item.Cells[1].Text = "&amp;lt;nobr&amp;gt;" + e.Item.Cells[1].Text + "&amp;lt;/nobr&amp;gt;"; &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;body&amp;gt;&lt;BR&gt;&amp;lt;form runat="server"&amp;gt;&lt;BR&gt;&amp;lt;asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black"&lt;BR&gt;OnItemDataBound="Item_DataBound" AutoGenerateColumns="false"&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;AlternatingItemStyle BackColor="#DEDEDE"&amp;gt;&amp;lt;/AlternatingItemStyle&amp;gt;&lt;BR&gt;&amp;lt;HeaderStyle BackColor="#EEEEFF" HorizontalAlign="Center"&amp;gt;&amp;lt;/HeaderStyle&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;Columns&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn HeaderText="序号" DataField="IntegerValue"/&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn HeaderText="文字" DataField="StringValue"/&amp;gt;&lt;BR&gt;&amp;lt;asp:BoundColumn HeaderText="价格" DataField="CurrencyValue" DataFormatString="{0:c}"&amp;gt;&lt;BR&gt;&amp;lt;ItemStyle HorizontalAlign="right"&amp;gt;&amp;lt;/ItemStyle&amp;gt;&lt;BR&gt;&amp;lt;/asp:BoundColumn&amp;gt;&lt;BR&gt;&amp;lt;/Columns&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;/asp:DataGrid&amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;&amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/html&amp;gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/16472.html" width = "1" height = "1" /&gt;</description></item></channel></rss>