﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><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>博客园-私の青い色スペース</title><link>http://www.cnblogs.com/richie214/</link><description>专注于.NET，认真把握好生命的每一秒，让每天都过的有意义。。！</description><language>zh-cn</language><lastBuildDate>Wed, 27 Aug 2008 23:26:26 GMT</lastBuildDate><pubDate>Wed, 27 Aug 2008 23:26:26 GMT</pubDate><ttl>60</ttl><item><title>Asp.net 用DataSet对象更新数据(SqlDataAdapter)</title><link>http://www.cnblogs.com/richie214/archive/2006/10/04/521382.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Wed, 04 Oct 2006 14:46:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/10/04/521382.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/521382.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/10/04/521382.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/521382.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/521382.html</trackback:ping><description><![CDATA[　　大家知道，DataSet保存的数据是位于服务器内存里面的原数据库的&#8220;副本&#8221;。所以用DataSet更新数据的过程就是先对&#8220;副本&#8221;进行更新，然后在将&#8220;原本&#8221;更新，按照我的理解就是把&#8220;原本&#8221;覆盖掉。具体到过程，首先是要找到需要更新的行，然后赋新值，最后更新原数据库。<br>　　要找到需要修改的行，比较方便的做法就是根据记录中的某个值进行查找，这样比用&#8220;列号&#8221;&#8220;行号&#8221;什么的方便多了。要做到这一点，首先就是要给数据库指定一个主键，然后即可按照主键进行查找。要注意的是这个主键必须要是在程序中指定的,并且这个主键不一定和你数据库原来有的主键一样。<br>　　然后就是最后的更新，当然是用DataAdapter的Update()方法借助CommandBuilder来实现，要注意的是，<span class=style1><font color=#ff0000>如果你的数据库一开始没有定义主键，那进行更新的时候会出错，</font></span>返回的错误将是&#8220;对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。&#8221;这是因为我们用的Update()实际上是通过CommandBuilder动态生成sql语句，然后才进行的数据库操作。<span class=style1><font color=#ff0000>但如果你在一开始创建DataAdapter时的那个sql语句没有包含有主键的列的话，那CommandBuilder将不会发生作用。</font></span>这一点是必须要牢记的。<br>　　说了这么多，如果有不明白的就看下面的程序，这个是我练习时写的，里面有一些个人的设定，比如记录名什么的，相信大家一看就明白。<br>&lt;%@import namespace="System.Data"%&gt;<br>&lt;%@import namespace="System.Data.OleDb"%&gt;<br>&lt;script language="c#" runat="server"&gt;<br>//定义处理更新的方法<br>//因为是简单示例，所以这个程序已经简化，直接进行更新<br>//这里有两个参数，第一个用来查找需要更新的行，第二个是要修改的值<br>private void up_date(int ids,string names){<br>//连接字符串，不明白的可以看本专题第二篇文章<br>string connstr=ConfigurationSettings.AppSettings["color"];<br>OleDbConnection conn=new OleDbConnection(connstr);<br>string sql="select * from member";<br>OleDbDataAdapter ada=new OleDbDataAdapter(sql,conn);//建立一个DataAdapter对象<br>//这里的CommandBuilder对象一定不要忘了,一般就是写在DataAdapter定义的后面<br>OleDbCommandBuilder cb=new OleDbCommandBuilder(ada);<br>DataSet ds=new DataSet();//建立DataSet对象<br>conn.Open();//打开连接<br>ada.Fill(ds,"mems");//填充DataSet<br>conn.Close();//注意及时关闭连接<br>DataTable dt=ds.Tables["mems"];//建立一个DataTable对象，方便操作<br><font color=#ff0000><span class=style1>dt.PrimaryKey=new DataColumn[]{dt.Columns["id"]};//建立一个主键<br>DataRow dr=dt.Rows.Find(ids);//根据参数查找到需要修改的行</span><br></font>dr["name"]=names;//对需要修改的记录赋新值<br>ada.Update(ds,"mems");//用DataAdapter的Update()方法进行数据库的更新<br>}<br>//定义用来响应按钮单击事件的方法<br>private void b1_Click(object sender,System.EventArgs e){<br>if(Page.IsValid){<br>int ids=Int32.Parse(idst.Text);//取得要修改的行的id值，并转换成int类型<br>string names=namest.Text;//取得新值<br>up_date(ids,names);//调用我们定义的方法处理<br>lb1.Text="ok!";<br>&lt;/script&gt;<br><br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>&lt;title&gt;用dataset更新记录&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;asp:Label id="lb1" runat="server"/&gt;<br>&lt;form runat="server"&gt;<br>&lt;asp:TextBox id="idst" runat="server"/&gt;<br>&lt;asp:RequiredFieldValidator id="rfv1" ControlToValidate="idst" ErrorMessage="error!" runat="server"/&gt;<br>&lt;asp:TextBox id="namest" runat="server"/&gt;<br>&lt;asp:RequiredFieldValidator id="rfv2" ControlToValidate="namest" ErrorMessage="error!" runat="server"/&gt;<br>&lt;asp:Button id="b1" Text="here!!" OnClick="b1_Click" runat="server"/&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>补充一点，如果想设多于两个的主键的话，可以用这个<br><font color=#ff0000><span class=style1>dt.PrimaryKey=new DataColumn[]{dt.Columns["id"],dt.Columns["id2"]};</span><br></font>就是给数组添加两个值，然后使用的时候：<br><font color=#ff0000><span class=style1>Object[] keyValues=new object[1]; //这里必须实例化否则会向你要初值<br>//而且需要后面方括号中的这个索引范围<br>keyValues[0]=(object)key1;<br>keyValues[1]=(object)key2;<br>...... 另外一种写法<br>Object[] keyValues={(object)key1,(object)key2};//以楣举方式赋初值</span><br></font>很明白了吧 ：）
<img src ="http://www.cnblogs.com/richie214/aggbug/521382.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41924/" target="_blank">[新闻]中国软件协会：SAP羞辱国产软件是不正当竞争</a>]]></description></item><item><title>asp中正则表达式的应用</title><link>http://www.cnblogs.com/richie214/archive/2006/09/21/510240.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Wed, 20 Sep 2006 19:15:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/21/510240.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/510240.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/21/510240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/510240.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/510240.html</trackback:ping><description><![CDATA[<div class=content>一、正则表达式概述&nbsp; <br>　　二、正则表达式在VBScript中的应用&nbsp; <br>　　三、正则表达式在VavaScript中的应用&nbsp; <br>　　四、示例&nbsp; <br>　　五、总结&nbsp; <br><br>　　一、正则表达式概述&nbsp; <br>　　如果原来没有使用过正则表达式，那么可能对这个术语和概念会不太熟悉。不过，它们并不是您想象的那么新奇。&nbsp; <br>　　请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名&nbsp; <br>中的单个字符，而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件：data1.dat、data2.dat等&nbsp; <br>等。如果使用 * 字符代替 ? 字符，则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名：data.dat、&nbsp; <br>data1.dat、data12.dat等等，尽管这种搜索文件的方法肯定很有用，但也十分有限。? 和 * 通配符的有限能力可以使你&nbsp; <br>对正则表达式能做什么有一个概念，不过正则表达式的功能更强大，也更灵活。&nbsp; <br>　　在我们编写ASP程序时，经常会判断一个字符串的有效性，如；一个串是否是数字、是否是有效的Email地址等等。如&nbsp; <br>果不使用正则表达式，那么判断的程序会很长，并且容易出错，如果使用正则表达式，这些判断就是一件很轻松的工作&nbsp; <br>了。后面我们将介绍如何判断数字和Email地址的有效性。&nbsp; <br>　　在典型的搜索和替换操作中，必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够&nbsp; <br>了，但是由于它缺乏灵活性，因此在搜索动态文本时就有困难了，甚至是不可能的。&nbsp; <br>　　使用正则表达式，能完成些什么事情呢？&nbsp; <br>　　测试字符串的某个模式。例如，可以对一个输入字符串进行测试，看在该字符串是否存在一个电话号码模式或一个信&nbsp; <br>用卡号码模式。这称为数据有效性验证。&nbsp; <br>　　替换文本。可以在文档中使用一个正则表达式来标识特定文字，然后可以全部将其删除，或者替换为别的文字。&nbsp; <br>　　根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。&nbsp; <br>　　例如，如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记，则可以使用正则表达式对每&nbsp; <br>个文件进行测试，看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法，就可以将受影响的文件范围&nbsp; <br>缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料，最后，可以再次使用正则表达&nbsp; <br>式来查找并替换那些需要替换的标记。&nbsp; <br>　　那么，正则表达式语法的语法是如何呢？&nbsp; <br>　　一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文&nbsp; <br>字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。&nbsp; <br>　　这里有一些可能会遇到的正则表达式示例：&nbsp; <br>　　/^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。&nbsp; <br>　　/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。&nbsp; <br>　　/&lt;(.*)&gt;.*&lt;\/\1&gt;/ "&lt;(.*)&gt;.*&lt;\/\1&gt;" 匹配一个 HTML 标记。&nbsp; <br><br>　　二、正则表达式在VBScript中的应用&nbsp; <br>　　VBScript使用RegExp对象、Matches集合以及Match对象提供正则表达式支持功能。我们还是先看一个例子。&nbsp; <br>&lt;% <br>Function RegExpTest(patrn, strng) <br>Dim regEx, Match, Matches 　　'建立变量。 <br>Set regEx = New RegExp 　　'建立正则表达式。 <br>regEx.Pattern = patrn　　'设置模式。 <br>regEx.IgnoreCase = True 　　'设置是否区分字符大小写。 <br>regEx.Global = True 　　'设置全局可用性。 <br>Set Matches = regEx.Execute(strng)　　'执行搜索。 <br>For Each Match in Matches　　'遍历匹配集合。 <br>RetStr = RetStr &amp; "Match found at position " <br>RetStr = RetStr &amp; Match.FirstIndex &amp; ". Match Value is '" <br>RetStr = RetStr &amp; Match.Value &amp; "'." &amp; " <br>" <br>Next <br>RegExpTest = RetStr <br>End Function <br>response.write RegExpTest("[ij]s.", "IS1 Js2 IS3 is4") <br>%&gt;&nbsp; <br>在这个例子中，我们查找字符串中有无is或者js这两个词，忽略大小写。运行的结果如下：&nbsp; <br>Match found at position 0. Match Value is 'IS1'.&nbsp; <br>Match found at position 4. Match Value is 'Js2'.&nbsp; <br>Match found at position 8. Match Value is 'IS3'.&nbsp; <br>Match found at position 12. Match Value is 'is4'.&nbsp; <br>下面我们就介绍这三个对象和集合。&nbsp; <br>　　1、RegExp对象是最重要的一个对象，它有几个属性，其中：&nbsp; <br>　　○Global 属性，设置或返回一个 Boolean 值，该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如&nbsp; <br>果搜索应用于整个字符串，Global 属性的值为 True，否则其值为 False。默认的设置为 False。&nbsp; <br>　　○IgnoreCase 属性，设置或返回一个Boolean值，指明模式搜索是否区分大小写。如果搜索是区分大小写的，则&nbsp; <br>IgnoreCase 属性为 False；否则为 True。缺省值为 False。&nbsp; <br>　　○Pattern 属性，设置或返回被搜索的正则表达式模式。必选项。总是一个 RegExp 对象变量。&nbsp; <br>　　2、Match 对象&nbsp; <br>　　匹配搜索的结果是存放在Match对象中，提供了对正则表达式匹配的只读属性的访问。 Match 对象只能通过 RegExp&nbsp; <br>对象的 Execute 方法来创建，该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。在执行正则&nbsp; <br>表达式时，可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的&nbsp; <br>长度，以及找到匹配的索引位置等。&nbsp; <br>　　○FirstIndex 属性，返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量，该偏移量是相对于&nbsp; <br>搜索字符串的起始位置而言的。换言之，字符串中的第一个字符被标识为字符 0&nbsp; <br>　　○Length 属性，返回在字符串搜索中找到的匹配的长度。&nbsp; <br>　　○Value 属性，返回在一个搜索字符串中找到的匹配的值或文本。&nbsp; <br>　　3、Matches 集合&nbsp; <br>　　正则表达式 Match 对象的集合。Matches 集合中包含若干独立的 Match 对象，只能使用 RegExp 对象的 Execute 方&nbsp; <br>法来创建之。与独立的 Match 对象属性相同，Matches `集合的一个属性是只读的。在执行正则表达式时，可能产生零个&nbsp; <br>或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度，以及标识匹配位&nbsp; <br>置的索引。&nbsp; <br>　　学习了这三个对象和集合，如何应用于字符串的判断和替换呢？regExp对象的三个方法正好解决了这个问题，它们是&nbsp; <br>Replace方法、Test方法和Execute方法。&nbsp; <br>　　1、Replace 方法&nbsp; <br>　　替换在正则表达式查找中找到的文本。我们还是先看个例子：下面的例子说明了 Replace 方法的用法。&nbsp; <br>&lt;% <br>Function ReplaceTest(patrn, replStr) <br>Dim regEx, str1 ' 建立变量。 <br>str1 = "The quick brown fox jumped over the lazy dog." <br>Set regEx = New RegExp ' 建立正则表达式。 <br>regEx.Pattern = patrn ' 设置模式。 <br>regEx.IgnoreCase = True ' 设置是否区分大小写。 <br>ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。 <br>End Function <br>Response.write ReplaceTest("fox", "cat") &amp; " <br>" ' 将 'fox' 替换为 'cat'。 <br>Response.write ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1") ' 交换词对. <br>%&gt;&nbsp; <br>　　2、Test 方法&nbsp; <br>　　对指定的字符串执行一个正则表达式搜索，并返回一个 Boolean 值指示是否找到匹配的模式。正则表达式搜索的实际&nbsp; <br>模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。&nbsp; <br>　　如果找到了匹配的模式，Test方法返回True；否则返回False。下面的代码说明了Test 方法的用法。&nbsp; <br>&lt;% <br>Function RegExpTest(patrn, strng) <br>Dim regEx, retVal ' 建立变量。 <br>Set regEx = New RegExp ' 建立正则表达式。 <br>regEx.Pattern = patrn ' 设置模式。 <br>regEx.IgnoreCase = False ' 设置是否区分大小写。 <br>retVal = regEx.Test(strng) ' 执行搜索测试。 <br>If retVal Then <br>RegExpTest = "找到一个或多个匹配。" <br>Else <br>RegExpTest = "未找到匹配。" <br>End If <br>End Function <br>Response.write RegExpTest("is.", "IS1 is2 IS3 is4") <br>%&gt;&nbsp; <br>　　3、Execute 方法&nbsp; <br>　　对指定的字符串执行正则表达式搜索。正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。&nbsp; <br>　　Execute 方法返回一个 Matches 集合，其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹&nbsp; <br>配，Execute 将返回空的 Matches 集合。&nbsp; <br><br>　　三、JavaScript中正则表达式的使用&nbsp; <br>　　在JavaScript 1.2版以后，JavaScript也支持正则表达式。&nbsp; <br>　　1、replace&nbsp; <br>　　replace在一个字符串中通过正则表达式查找替换相应的内容。replace并不改变原来的字符串，只是重新生成了一个&nbsp; <br>新的字符串。如果需要执行全局查找或忽略大小写，那么在正则表达式的最后添加g和i。&nbsp; <br>例：&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>re = /apples/gi;&nbsp; <br>str = "Apples are round, and apples are juicy.";&nbsp; <br>newstr=str.replace(re, "oranges");&nbsp; <br>document.write(newstr)&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>结果是："oranges are round, and oranges are juicy."&nbsp; <br>例：&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>str = "Twas the night before Xmas...";&nbsp; <br>newstr=str.replace(/xmas/i, "Christmas");&nbsp; <br>document.write(newstr)&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>结果是："Twas the night before Christmas..."&nbsp; <br>例：&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>re = /(\w+)\s(\w+)/;str = "John Smith";&nbsp; <br>newstr = str.replace(re, "$2, $1");&nbsp; <br>document.write(newstr)&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>结果是："Smith, John".&nbsp; <br>　　2、search&nbsp; <br>search通过正则表达式查找相应的字符串，只是判断有无匹配的字符串。如果查找成功，search返回匹配串的位置，&nbsp; <br>否则返回-1。&nbsp; <br>　　　　　　　　　search(regexp)&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>function testinput(re, str){&nbsp; <br>if (str.search(re) != -1)&nbsp; <br>midstring = " contains ";&nbsp; <br>else&nbsp; <br>midstring = " does not contain ";&nbsp; <br>document.write (str + midstring + re.source);&nbsp; <br>}&nbsp; <br>testinput(/^[1-9]/i,"123")&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>　　3、match&nbsp; <br>　　match方法执行全局查找，查找结果存放在一个数组里。&nbsp; <br>例一：&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>str = "For more information, see Chapter 3.4.5.1";&nbsp; <br>re = /(chapter \d+(\.\d)*)/i;&nbsp; <br>found = str.match(re);&nbsp; <br>document.write(found);&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>显示结果：Chapter 3.4.5.1,Chapter 3.4.5.1,.1&nbsp; <br>例二：&nbsp; <br>&lt;SCRIPT&gt;&nbsp; <br>str = "abcDdcba";&nbsp; <br>newArray = str.match(/d/gi);&nbsp; <br>document.write(newArray);&nbsp; <br>&lt;/SCRIPT&gt;&nbsp; <br>显示结果D, d.&nbsp; <br><br>　　四、示例&nbsp; <br>1 、判断数字的正确性&nbsp; <br>&lt;%@ Language=VBScript %&gt;&nbsp; <br>&lt;script language="javascript" runat="server"&gt;&nbsp; <br>function isNumeric(strNumber) {&nbsp; <br>return (strNumber.search(/^(-|\+)?\d+(\.\d+)?$/) != -1);&nbsp; <br>}&nbsp; <br>function isUnsignedNumeric(strNumber) {&nbsp; <br>return (strNumber.search(/^\d+(\.\d+)?$/) != -1);&nbsp; <br>}&nbsp; <br>function isInteger(strInteger) {&nbsp; <br>return (strInteger.search(/^(-|\+)?\d+$/) != -1);&nbsp; <br>}&nbsp; <br>function isUnsignedInteger(strInteger) {&nbsp; <br>return (strInteger.search(/^\d+$/) != -1);&nbsp; <br>}&nbsp; <br>&lt;/script&gt;&nbsp; <br>&lt;HTML&gt;&nbsp; <br>&lt;BODY&gt;&nbsp; <br>判断数字的正确性&nbsp; <br>&lt;% <br>Dim strTemp <br>strTemp = CStr(Request.Form("inputstring")) <br>If strTemp = "" Then strTemp = "0" <br>%&gt;&nbsp; <br>&lt;TABLE BORDER="1" CELLPADDING="4" CELLSPACING="2"&gt;&nbsp; <br>&lt;TR&gt;&nbsp; <br>&lt;TD ALIGN="right"&gt;原始字符串&lt;/TD&gt;&nbsp; <br>&lt;TD&gt;&lt;%= strTemp %&gt;&lt;/TD&gt;&nbsp; <br>&lt;/TR&gt;&nbsp; <br>&lt;TR&gt;&nbsp; <br>&lt;TD ALIGN="right"&gt;数字&lt;/TD&gt;&nbsp; <br>&lt;TD&gt;&lt;%=isNumeric(strTemp)%&gt;&lt;/TD&gt;&nbsp; <br>&lt;/TR&gt;&nbsp; <br>&lt;TR&gt;&nbsp; <br>&lt;TD ALIGN="right"&gt;非负数字&lt;/TD&gt;&nbsp; <br>&lt;TD&gt;&lt;%=isUnsignedNumeric(strTemp)%&gt;&lt;/TD&gt;&nbsp; <br>&lt;/TR&gt;&nbsp; <br>&lt;TR&gt;&nbsp; <br>&lt;TD ALIGN="right"&gt;整数&lt;/TD&gt;&nbsp; <br>&lt;TD&gt;&lt;%=isInteger(strTemp)%&gt;&lt;/TD&gt;&nbsp; <br>&lt;/TR&gt;&nbsp; <br>&lt;TR&gt;&nbsp; <br>&lt;TD ALIGN="right"&gt;非负整数()&lt;/TD&gt;&nbsp; <br>&lt;TD&gt;&lt;%=isUnsignedInteger(strTemp)%&gt;&lt;/TD&gt;&nbsp; <br>&lt;/TR&gt;&nbsp; <br>&lt;/TABLE&gt;&nbsp; <br>&lt;FORM ACTION="&lt;%=Request.ServerVariables("SCRIPT_NAME")%&gt;" METHOD="post"&gt;&nbsp; <br>请输入一个数字: <br>&nbsp; <br>&lt;INPUT TYPE="text" NAME="inputstring" SIZE="50"&gt;&lt;/INPUT&gt; <br>&nbsp; <br>&lt;INPUT TYPE="submit" Value="提交"&gt;&lt;/INPUT&gt; <br>&nbsp; <br>&lt;/FORM&gt;&nbsp; <br>&lt;/BODY&gt;&nbsp; <br>&lt;/HTML&gt;&nbsp; <br>2、判断Email地址的正确性&nbsp; <br>&lt;% <br>Function isemail(strng) <br>isemail = false <br>Dim regEx, Match <br>Set regEx = New RegExp <br>regEx.Pattern = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$" <br>regEx.IgnoreCase = True <br>Set Match = regEx.Execute(strng) <br>if match.count then isemail= true <br>End Function <br>%&gt; <br><br><br>五、总结&nbsp; <br>　　上面我们介绍了正则表达式的基本概念，以及在VBScript和JavaScript中如何使用正则表达式，同时，通过一些实例&nbsp; <br>让大家有了感性的认识。正则表达式的应用范围很广，能为大家解决很多实际中的问题。本文介绍的内容只是一些初步的&nbsp; <br>知识，还有很多语法规则需要大家继续学习，在实践中发现问题，解决问题。 返回顶部&nbsp; <br><br><br><br>　　　　　　　　　　　　　怎么实现数据记录的分页显示(作者：DarkMan)&nbsp; <br><br>怎么实现数据记录的分页显示 (1)&nbsp; <br><br>通过Recordset的GetRows方法，可以实现数据记录的分页显示。下面是一个完整的例子：&nbsp; <br>&lt;%@ Language = VBSCRIPT %&gt;&nbsp; <br>&lt;% Option Explicit %&gt;&nbsp; <br>&lt;% <br>Dim iStart, iOffset <br>iStart = Request("Start") <br>iOffset = Request("Offset") <br><br>if Not IsNumeric(iStart) or Len(iStart) = 0 then <br>　　iStart = 0 <br>else <br>　　iStart = CInt(iStart) <br>end if <br><br>if Not IsNumeric(iOffset) or Len(iOffset) = 0 then <br>　　iOffset = 10 <br>else <br>　　iOffset = Cint(iOffset) <br>end if <br><br>Response.Write "察看 " &amp; iOffset &amp; " 个记录从 " &amp; iStart &amp; "开始 <br>" <br><br>Dim objConn, objRS <br>Set objConn = Server.CreateObject("ADODB.Connection") <br>objConn.Open "Provider=SQLOLEDB.1;Data Source=(local);uid=sa;pwd=;Initial 　　　Catalog=pubs" <br><br>Set objRS = Server.CreateObject("ADODB.Recordset") <br>objRS.Open "SELECT * FROM Authors", objConn <br><br>Dim aResults <br>aResults = objRS.GetRows <br><br>objRS.Close <br>Set objRS = Nothing <br><br>objConn.Close <br>Set objConn = Nothing <br><br>Dim iRows, iCols, iRowLoop, iColLoop, iStop <br>iRows = UBound(aResults, 2) <br>iCols = UBound(aResults, 1) <br><br>If iRows &gt; (iOffset + iStart) Then&nbsp; <br>　　iStop = iOffset + iStart - 1&nbsp; <br>Else&nbsp; <br>　　iStop = iRows&nbsp; <br>End If&nbsp; <br><br>For iRowLoop = iStart to iStop&nbsp; <br>　　For iColLoop = 0 to iCols&nbsp; <br>　Response.Write aResults(iColLoop, iRowLoop) &amp; " "&nbsp; <br>　Next&nbsp; <br>　　Response.Write " <br>"&nbsp; <br>　Next&nbsp; <br><br>Response.Write "&lt;P&gt;"&nbsp; <br>if iStart &gt; 0 then&nbsp; <br>'显示&#8220;前 10个&#8221;连接&nbsp; <br>　　Response.Write "&lt;A HREF=""paging.asp?Start=" &amp; iStart-iOffset &amp; _ <br>　"&amp;Offset=" &amp; iOffset &amp; """&gt;前 " &amp; iOffset &amp; ""&nbsp; <br>　end if&nbsp; <br><br>if iStop &lt; iRows then <br>'显示&#8220;后 10个&#8221;连接 <br>　Response.Write " &lt;A HREF=""paging.asp?Start=" &amp; iStart+iOffset &amp; _ <br>　　"&amp;Offset=" &amp; iOffset &amp; """&gt;后 " &amp; iOffset &amp; ""&nbsp; <br>end if&nbsp; <br>%&gt;&nbsp; <br><br><br>怎么实现数据的分页显示(2)&nbsp; <br>这里介绍另外一种分页显示的方法，是通过 MS SQL的存储过程。本方法不适用于Access数据库。&nbsp; <br>假设我们要对数据表MyTable的数据实现分页显示，首先写一个存储过程 如下：&nbsp; <br>CREATE PROCEDURE sp_PagedItems&nbsp; <br>　(&nbsp; <br>　　@Page int,&nbsp; <br>　　@RecsPerPage int&nbsp; <br>　　)&nbsp; <br>　　AS&nbsp; <br><br>　　-- 加快表的 插入速度&nbsp; <br>　　SET NOCOUNT ON&nbsp; <br><br>　　-- 开始记录 号&nbsp; <br>　　DECLARE @RecCount int&nbsp; <br>　　SELECT @RecCount = @RecsPerPage * @Page + 1&nbsp; <br><br>　　--创建临时 表&nbsp; <br>　　CREATE TABLE #TempItems&nbsp; <br>　　(&nbsp; <br>　　ID int IDENTITY,&nbsp; <br>　　Name varchar(50),&nbsp; <br>　　Price currency&nbsp; <br>　)&nbsp; <br><br>　　-- 准备临时 表&nbsp; <br>　　INSERT INTO #TempItems (Name, Price)&nbsp; <br>　　SELECT Name,Price FROM MyTable ORDER BY Price&nbsp; <br><br>　　-- 求出要查 询的最小ID和最大ID&nbsp; <br>　　DECLARE @FirstRec int, @LastRec int&nbsp; <br>　　SELECT @FirstRec = (@Page - 1) * @RecsPerPage&nbsp; <br>　　SELECT @LastRec = (@Page * @RecsPerPage + 1)&nbsp; <br><br>　　-- 得到实际 的记录，并返回是否还有数据!&nbsp; <br>　　SELECT *,&nbsp; <br>　　MoreRecords =&nbsp; <br>　(&nbsp; <br>　　SELECT COUNT(*)&nbsp; <br>　　FROM #TempItems TI&nbsp; <br>　　WHERE TI.ID &gt;= @LastRec&nbsp; <br>　)&nbsp; <br>　　FROM #TempItems&nbsp; <br>　　WHERE ID &gt; @FirstRec AND ID &lt; @LastRec <br><br>　　-- 恢复设置 <br>　　SET NOCOUNT OFF <br><br>　　在这个存储过程里，我们首先创建一个全部 记录的临时表，并增加了一个自动编号的字段ID。这样，不同的记录就有 <br>一个递增的唯一标志。 <br>　　根据当前的页号和每页的记录数，可以计算 出每页的最小和最大的ID。从而得到当前页的所有记录。 <br>　　为了显示的方便，存储过程还计算了 MoreRecords字段，作为显示下一页的判断条件。 <br>　　利用了这个存储过程的程序代码如下： <br>　&lt;% <br>　　'每页显示10条 <br>　　Const iRecordsPerPage = 10 <br><br>　　Dim currentPage '当前页号 <br>　　Dim bolLastPage '在最后一页? <br>　　 <br>　if len(Request.QueryString("page")) = 0 then <br>　　 currentPage = 1 <br>　else <br>　　 currentPage = CInt(Request.QueryString("page")) <br>　end if <br><br>　　'得到当前页的记录 <br>　　strSQL = "sp_PagedItems " &amp; currentPage &amp; "," &amp; iRecordsPerPage <br>　　objRS.Open strSQL, objConn <br>　　 <br>　　'判断是否在最后一页 <br>　if Not objRS.EOF then <br>　　 if CInt(objRS("MoreRecords")) &gt; 0 then&nbsp; <br>　　　 bolLastPage = False&nbsp; <br>　　 else&nbsp; <br>　　　 bolLastPage = True&nbsp; <br>　　 end if&nbsp; <br>　　end if&nbsp; <br>　　%&gt;&nbsp; <br>　　&lt;P&gt;&nbsp; <br><br>　&lt;TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 ALIGN=CENTER&gt;&nbsp; <br>　　&lt;TR&gt;&lt;TH COLSPAN=2 BGCOLOR=NAVY&gt;&nbsp; <br>　　&lt;FONT SIZE=+1 COLOR=WHITE&gt;&nbsp; <br>　　　 List of Items&nbsp; <br>　　&nbsp; <br>　　&lt;/TH&gt;&lt;/TR&gt;&nbsp; <br>　&lt;% <br>　　Do While Not objRS.EOF %&gt;&nbsp; <br>　　 &lt;TR&gt;&lt;TD ALIGN=LEFT BGCOLOR=GRAY&gt;&nbsp; <br>　　 &lt;%=objRS("Name")%&gt;&nbsp; <br>　　 &lt;/TD&gt;&lt;TD ALIGN=CENTER BGCOLOR=GRAY&gt;&nbsp; <br>　　 &lt;%=FormatCurrency(objRS("Price"))%&gt;&nbsp; <br>　　 &lt;/TD&gt;&lt;/TR&gt;&nbsp; <br>　　&lt;% objRS.MoveNext <br>　　Loop %&gt;&nbsp; <br>　&lt;/TABLE&gt;&nbsp; <br>　　&lt;P&gt;&nbsp; <br>　　&lt;CENTER&gt;&nbsp; <br>　&lt;% <br><br>　　'第一页不 显示&#8220;前一页&#8221; <br>　if currentPage &gt; 1 then %&gt;&nbsp; <br>　　&lt;INPUT TYPE=BUTTON VALUE="&lt;&lt; 前 &lt;%=iMaxRecords%&gt; 记录 "&nbsp; <br>　　ONCLICK="document.location.href='thispage.asp?page=&lt;%=currentPage-1%&gt;'"&gt; ;&nbsp; <br>　　&nbsp;&nbsp;&nbsp; <br>　&lt;% end if <br><br>　　'最后一页 不显示&#8220;后一页&#8221; <br>　if Not bolLastPage then %&gt;&nbsp; <br>　　&lt;INPUT TYPE=BUTTON VALUE="后 &lt;%=iMaxRecords%&gt; 记录 &gt;&gt;"&nbsp; <br>　　ONCLICK="document.location.href='thispage.asp?page=&lt;%=currentPage+1%&gt;'"&gt; ;&nbsp; <br>　&lt;% end if %&gt;&nbsp; <br>　　&lt;/CENTER&gt;　</div>
<img src ="http://www.cnblogs.com/richie214/aggbug/510240.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41923/" target="_blank">[新闻]福布斯：Facebook网站十大最火爆游戏</a>]]></description></item><item><title>Asp.Net细节性问题精萃 </title><link>http://www.cnblogs.com/richie214/archive/2006/09/18/507662.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Mon, 18 Sep 2006 09:26:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/18/507662.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/507662.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/18/507662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/507662.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/507662.html</trackback:ping><description><![CDATA[<div class=postText><span id=ArticleContent1_ArticleContent1_lblContent>&nbsp; 1.&lt;%=...%&gt;与&lt;%#... %&gt;的区别:<br>&nbsp;&nbsp; 答:&lt;%=...%&gt;是在程序执行时调用，&lt;%#... %&gt;是在DataBind()方法之后被调用
<p>2.控件接收哪些类型数据? <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 答:接收Bind的控件，一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件，而被捆绑&nbsp;&nbsp; 的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个，以后我们就可以&nbsp;&nbsp; 对号入座，不会出现DataTable被捆绑的错误了：）</p>
<p>3.DataBind,获得的数据，系统会将其默认为String,怎样转化为其它的类型?<br>&nbsp; DataBinder.Eval(Container.DataItem,"转换的类型","格式")<br>&nbsp; 最后一个"格式"是可选的，一般不用去管他，Container.DataItem是捆绑的数据项,"转换类型"指的是&nbsp;&nbsp;&nbsp; Integer,String,Boolean这一类东西.</p>
<p>4.主要命名空间:<br>&nbsp; &lt;% @ Import Namespace="System.Data" %&gt;&nbsp;&nbsp;&nbsp; 处理数据时用到<br>&nbsp; &lt;% @ Import Namespace="System.Data.ADO" % &gt;&nbsp; 使用ADO.net ; 时用到<br>&nbsp; &lt;% @ Import Namespace="System.Data.SQL" %&gt;&nbsp;&nbsp; SQL Server 数据库专用<br>&nbsp; &lt;% @ Import Namespace="System.Data.XML" %&gt;&nbsp;&nbsp; 不用看处理XML用到<br>&nbsp; &lt;% @ Import Namespace="System.IO" %&gt;&nbsp;&nbsp; 处理文件时用到<br>&nbsp; &lt;% @ Import Namespace="System.Web.Util" %&gt;&nbsp;&nbsp; 发邮件时大家会用到<br>&nbsp; &lt;% @ Import Namespace="System.Text" %&gt;&nbsp;&nbsp;&nbsp; 文本编码时用到</p>
<p>5.Connections(SQLConection 或者 ADOConnection)的常用属性和方法:<br>&nbsp; | ConnectionString 取得或设置连结数据库的语句 <br>&nbsp; | ConnectionTimeout 取得或设置连结数据库的最长时间，也是就超时时间 <br>&nbsp; | DataBase 取得或设置在数据库服务器上要打开的数据库名 <br>&nbsp; | DataSource 取得或设置DSN,大家不会陌生吧：） <br>&nbsp; | Password 取得或设置密码 <br>&nbsp; | UserID 取得或设置登陆名 <br>&nbsp; | State 取得目前联结的状态 <br>&nbsp; | Open() 打开联结 <br>&nbsp; | Close() 关闭联结 <br>&nbsp; | Clone() 克隆一个联结。（呵呵，绵羊可以Connection我也可以) <br>&nbsp;示例:<br>&nbsp;&nbsp;&nbsp;&nbsp; SQLConnection myConnection = new SQLConnection();<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.DataSource = "mySQLServer";<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.Password = "";<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.UserID = "sa";<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.ConnectionTimeout = 30;<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.Open();<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.Database = "northwind";<br>&nbsp;&nbsp;&nbsp;&nbsp; myConnection.IsolationLevel = IsolationLevel.ReadCommitted<br>6.Command常用的方法和属性<br>&nbsp;&nbsp; | ActiveConnection 取得或设置联结Connections <br>&nbsp;&nbsp; | CommandText 执行的SQL语句或储存过程(StoredProcedure)名 <br>&nbsp;&nbsp; | CommandTimeout 执行的最长时间 <br>&nbsp;&nbsp; | CommandType Command操作的类型(StoredProcedure,Text,TableDirect)三种,默认Text <br>&nbsp;&nbsp; | Parameters 操作储存过程时使用 <br>&nbsp;&nbsp; | Execute() 执行SQL语句或储存过程 <br>&nbsp;&nbsp; | ExecuteNonQuery() 同上，区别在于不返回记录集 <br>&nbsp;&nbsp; | Clone() 克隆Command <br>&nbsp; 示例：<br>&nbsp;&nbsp;&nbsp;&nbsp; string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";<br>&nbsp;&nbsp;&nbsp;&nbsp; stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer";<br>&nbsp;&nbsp;&nbsp;&nbsp; SQLCommand myCommand = new SQLCommand(mySelectQuery);<br>&nbsp;&nbsp;&nbsp;&nbsp; myCommand.ActiveConnection = new SQLConnection(myConnectString); <br>&nbsp;&nbsp;&nbsp;&nbsp; myCommand.CommandTimeout = 15;<br>&nbsp;&nbsp;&nbsp;&nbsp; myCommand.CommandType = CommandType.Text;&lt; /FONT &gt; </p>
<p>&nbsp;</p>
<p>7.打开和关闭数据库两种方法:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.MyConnection.Open();&nbsp;&nbsp;&nbsp; //打开联结<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyConnection.Close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.MyCommand.ActiveConnection.Open();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyCommand.ActiveConnection.Close()&nbsp; </p>
<p>8.使用DataSet，在数据库中增加、修改、删除一个数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.添加数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRow dr=MyDataSet.Tables["UserList"].NewRow();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dr["UserName"] = "周讯";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dr["ReMark"] = "100";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dr["Comment"] = "漂亮MM"；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDataSet.Tables.Rows.Add(dr);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.修改数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飞刀大哥";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c.删除数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDataSet.Tables["UserList"],Rows[0].Delete();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d.恢复数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(MyDataSet.HasErrors)<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; MyDataSet.RejectChanges();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.探测DataSet是否有改动<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(MyDataSet.HasChanges)<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; //保存代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&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; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.更新数据库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyComm.Update(MyDataSet);&nbsp;&nbsp; //更新数据库中所有的表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyComm.Update(MyDataSet,"UserList");&nbsp; //更新某个表<br>9.DataGrid实现分页功能<br>&nbsp;&nbsp;&nbsp;&nbsp; AllowPaging="True"&nbsp;&nbsp; //是指允许分页，这个是最主要的。有了它，我们才能分页。<br>&nbsp;&nbsp;&nbsp;&nbsp; PageSize="5"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是指定每页显示的记录数，如果不写，就会默认为10条。<br>&nbsp;&nbsp;&nbsp;&nbsp; PagerStyle-HorizontalAlign="Right"&nbsp; //是指定分面显示的定位，默认是Left</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; PagerStyle-NextPageText="下一页"&nbsp;&nbsp;&nbsp; //把&lt;&gt;改为上一页和下一页字符串<br>&nbsp;&nbsp;&nbsp;&nbsp; PagerStyle-PrevPageText="上一页"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; PagerStyle-Mode="NumericPages"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //把&lt;&gt;改为123数字显示<br>10.显示一共有多少页，并且报告当前为第几页<br>&nbsp;&nbsp;&nbsp;&nbsp; 当前页是：&lt;font color=red&gt;&lt;%=DataGrid1.CurrentPageIndex+1%&gt;&lt;/font&gt;&lt;br&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; 总页数是：&lt;font color=red&gt;&lt;%=DataGrid1.PageCount%&gt;&lt;/font&gt;&lt;br&gt;<br>11.个性化分页<br>&nbsp;&nbsp;&nbsp;&nbsp; 程序员大本营之"亲密接触ASP.Net(14)"有完整代码</p>
<p>12.要将页面重置为有效的状态<br>&nbsp;IValidator val; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach(val in Validators)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Val.IsValid = true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>13.重新执行整个验证序列&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IValidator val; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach(val in Validators)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Val.Validate(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>14.禁用客户端验证<br>&nbsp;&lt;%@ Page Language="c#" clienttarget=downlevel %&gt; <br>15.Repeater、DataList和DataGrid控件用途"<br>&nbsp;&nbsp;&nbsp;&nbsp; 这些控件可以简化几种常见的 Web 应用程序方案，包括报表、购物车、产品列表、查询 <br>&nbsp;结果和导航菜单。 &nbsp;Repeater是唯一允许在其模板中存在 HTML片段的控件.<br>16.Server.Execute("another.aspx")和Server.Transfer("another.aspx")区别:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Execute是从当前页面转移到指定页面,并将执行返回到当前页面<br>&nbsp;Transfer是将执行完全转移到指定页面<br>17.XML文件中可以自己存有架构,也可以存在于*.xsl文件中,但必须通过xmlns属性在xml文档的根节点中指定该信息,如下所示:<br>&nbsp;&lt;rootelement xmlns="x-schema:scheduledSchema.xsl"&gt;<br>18.XML文件的读取<br>&nbsp;FileStream myfs=new Filestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);<br>&nbsp;StreamReader myreader=new StreamReader(myfs);<br>&nbsp;DataSet myds=new DataSet();<br>&nbsp;myds.ReadXml(myreader);<br>19.正则表达式 控件RegularExpressionValidator<br>&nbsp;符号&nbsp;&nbsp;&nbsp;含义<br>&nbsp;^&nbsp;&nbsp;&nbsp;指定检查开始处<br>&nbsp;$&nbsp;&nbsp;&nbsp;指定检查结束处<br>&nbsp;[]&nbsp;&nbsp;&nbsp;检查输入的值是否与方括弧中的字符之一相匹配<br>&nbsp;\W&nbsp;&nbsp;&nbsp;允许输入任何值<br>&nbsp;\d{}&nbsp;&nbsp;&nbsp;"\d"指定输入的值是一个数字,{}表示已指定数据类型的出现次数<br>&nbsp;+&nbsp;&nbsp;&nbsp;表明一个或多个元素将被添加到正在检查的表达式<br>&nbsp;&nbsp;&nbsp; 示例:电子邮件格式(具有@号,且以.com/.net/.org/.edu结尾)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; validationexpression="^[\w-]+@[\w-]+\.(com|net|org|edu)$"<br>20.DataGrid控件中数据操作重要语句:<br>&nbsp;属性:DataKeyField="userid"&nbsp; //设userid为表的主键,无法将该字段的值更新到数据库，最好设表的主键为DataGrid的主键<br>&nbsp;SqlCommand.Parameters["@userid"].Value=dg.DataKeys[(int)e.Item.ItemIndex]; //检索所要更新的行的主键(将当前选定的行的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主键值赋给命令的一个参)数<br>&nbsp;SqlCommand.Parameters["@fname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; //为参数赋予已修改的行值<br>21.自定义控件:<br>&nbsp;a.用户控件(ASP创建页面一样)<br>&nbsp;&nbsp;(I).&nbsp; 创建页面,拖入控件,设置属性/方法.&nbsp;&nbsp; &lt;% @Control Language="C#" Debug="True" %&gt;中的@Control指令来定义此页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将包含控件代码<br>&nbsp;&nbsp;(II)&nbsp; 保存为*.ascx文件,如a.ascx.<br>&nbsp;&nbsp;(III).使用: 头&lt;%@Register Tagprefix="MyFirstControl" TagName="MyLbl" Src="a.axcs" %&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;//Tagprefix为控件的前缀,像ASP:TextBox中的ASP<br>&nbsp;&nbsp;&nbsp;&nbsp;//TagName用于指定自定义控件的名称<br>&nbsp;&nbsp;&nbsp;&nbsp;//Src指定控件文件源<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 身体:&lt;MyFirstControl:MyLbl runat="Server" id="AllMine" MyText="成功了" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;b.使用C#创建自定义控件<br>&nbsp;&nbsp;(I). 创建纯代码文件,继承基类Control,并保存为*.cs,如a.cs.<br>&nbsp;&nbsp;(II).将代码编译生成程序集: csc /t:library /r:System.dll,System.Web.Dll a.cs&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//library告诉C#编译器生成程序集<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp; /r:System.dll System.Web.Dll告诉C#编译器引用指定的程序集<br>&nbsp;&nbsp;(III).将生成dll文件放在bin目录中<br>&nbsp;&nbsp;(IV).使用: &lt;% @Register TagPrefix="Mine" Namespace="MyOwnControls" Assembly="a" %&gt;<br>22.复合控件注意事项:<br>&nbsp;public class MyCompositin:Control,INamingContainer&nbsp;&nbsp; //INamingContainer:如果在页面上有多个此控件实例,则此结口可以给每&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //个实例有唯一标志</p>
<p>&nbsp;this.EnsureChildControls();//表示将复合控件的子控件都呈现到页面上,此方法检查服务器控件是否包含子控件</p>
<p>&nbsp;CreateChildControls<br>23.Button/LinkButton/ImageButton/HyperLink什么时候用?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.Button和ImageButton用于将数据传递回服务器.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.Hyperlink用于在页面之间导航<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.LinkButton用于将数据保存到服务器或访问服务器上的数据<br>24.跟踪调试<br>&nbsp;&nbsp;&nbsp;&nbsp; 跟踪: <br>&nbsp;1.页级别跟踪: 在页的开头包括如下的页指令&lt;%@ Page Trace="True" TraceMode="SortByCategory/SortByTime" %&gt;<br>&nbsp;&nbsp;自定义消息: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Trace.Write("这里为要显示的字符串"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Trace.Warn("这里为要显示的字符串");&nbsp;&nbsp; //与Trace.Write相同,只是字体为红色<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 检查是否使用了跟踪<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例句: if(Trace.IsEnabled) { Trace.Warn("已启用跟踪")}&nbsp; &nbsp;<br>&nbsp;2.应用程序级别跟踪: 在Web.config文件的&lt;System.Web&gt;节中 &lt;trace enabled="true" pageOutput="true"/&gt;<br>25.设置缓存: <br>&nbsp;1.输出缓存:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I.页面设置: 将&nbsp; &lt;%@ OutputCache Duration="120" VaryByParam="none" %&gt;&nbsp; 加在需要缓存页的开头&nbsp; <br>&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;&nbsp;&nbsp;&nbsp; 注释:在请求该页的后两分钟之内,输出内容不变<br>&nbsp;&nbsp;&nbsp;&nbsp; II.编程方式设置: <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要使用类System.Web.HttpCachePolicy类下的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //句为两分钟<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));<br>&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; Response.Cache.SetSlidingExpiration(true);&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;&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;&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;&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; 功能:第一句设置缓存到期时间,第二行打开 sliding expiration(可调到期). <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.数据缓存:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1).DataView mySource; (2).给mySource赋值; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3).Cache["myCache"]=mySource; (4).mySource=(DataView)Cache["myCache"]<br>26.部署: 直接复制到产品服务器即可 复制语句: XCOPY &lt;source_path&gt; &lt;destination_path&gt; //XOPY只接受物理路径,不接受虚拟路径</p>
</span></div>
<img src ="http://www.cnblogs.com/richie214/aggbug/507662.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41922/" target="_blank">[新闻]谷歌允许用户评论搜索结果调整顺序</a>]]></description></item><item><title>Asp 高效分页代码，带注释，收集中。。</title><link>http://www.cnblogs.com/richie214/archive/2006/09/09/499821.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Sat, 09 Sep 2006 10:53:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/09/499821.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/499821.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/09/499821.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/499821.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/499821.html</trackback:ping><description><![CDATA[<p>&lt;SCRIPT LANGUAGE=javascript&gt;<br>&lt;!--<br>function sss(i)<br>{<br>&nbsp;document.s.pagelabel.value =i;<br>&nbsp;document.s.submit();</p>
<p>}<br>//--&gt;<br>&lt;/SCRIPT&gt;</p>
<p>&lt;%</p>
<p><br>mysql="select count(*) from youtableName "<br>rs.open mysql,conn,1<br>totalcount=rs(0)&nbsp;&nbsp; '总记录数<br>rs.close </p>
<p>pagesize=30&nbsp; '每页显示记录数<br>pagelabel=clear(request("pagelabel"))&nbsp; '第pagelabel页<br>if pagelabel="" then<br>&nbsp;pagelabel=1<br>end if</p>
<p>'***********************下面是关键，我们每页显示pagesize条数据，我们select的时候就只选择pagesize数量的记录。</p>
<p>if pagelabel&lt;&gt;1 then&nbsp; '如果不是第一页，假设是第3页，那么你需要知道前(pagelabel-1)*pagesize条记录最大的ID（该ID是表自增加ID索引）<br>&nbsp;mysql="select max(id) from (select top "&amp;(pagelabel-1)*pagesize&amp;" id from youtableName " )<br>&nbsp;mysql=mysql&amp;") ta"&nbsp; <br>&nbsp;rs.open mysql,conn,1<br>&nbsp;pagelabel=rs(0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;rs.close() <br>&nbsp;mysql="select top "&amp;pagesize&amp;" * from youtableName where id&gt;"&amp;pagelabel '取出大于ID的pagesize条记录<br>else<br>&nbsp;mysql="select top "&amp;pagesize&amp;" * from youtableName "&nbsp; <br>end if</p>
<p><br>set rs=conn.Execute(mysql)<br>%&gt;<br>&lt;table border=0 cellpadding=0 cellspacing=0 width="100%" class="big"&gt;<br>&nbsp;&lt;form name="s" action="" method="post"&gt;<br>&nbsp;&lt;tr class="head"&gt;<br>&nbsp; &lt;td align='center'&gt;列名1&lt;/td&gt;<br>&nbsp; &lt;td align='center'&gt;列名2&lt;/td&gt;<br>&nbsp; &lt;td align='center'&gt;列名3&lt;/td&gt;<br>&nbsp;<br>&nbsp;&lt;/tr&gt;<br>&nbsp;&lt;input type="hidden" name="pagelabel"&gt;<br>&nbsp;&lt;/form&gt;<br>&nbsp;<br>&lt;%<br>if not rs.eof then<br>arrdata1=rs.GetRows()<br>rs.close<br>set rs=nothing</p>
<p>rowsA=ubound(arrdata1,2) '本页的记录数</p>
<p>pagecount=totalcount / pagesize&nbsp; '页数<br>if ((totalcount mod pagesize)&lt;&gt;0) then<br>&nbsp;pagecount=int(pagecount)+1<br>else<br>&nbsp;pagecount=int(pagecount)<br>end if<br>&nbsp;<br>&nbsp; for i=0 to rowsA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; <br>&nbsp;&nbsp; Response.Write "&lt;TR&gt;&lt;TD&nbsp; align=center&gt;"&amp;arrdata1(1,i)&amp;"&lt;/td&gt;"<br>&nbsp;&nbsp; Response.Write "&lt;td align='center'&gt;"&amp;arrdata1(2,i)&amp;"&lt;/td&gt;"<br>&nbsp;&nbsp; Response.Write "&lt;td align='center'&gt;"&amp;arrdata1(3,i)&amp;"&lt;/td&gt;"<br>&nbsp;&nbsp; 'Response.Write "&lt;td align='center'&gt;"&amp;arrdata1(4,i)&amp;"&lt;/td&gt;"<br>&nbsp;&nbsp; 'Response.Write "&lt;td align='center'&gt;"&amp;arrdata1(4,i)&amp;"&lt;/td&gt;"<br>&nbsp;&nbsp; Response.Write "&lt;/tr&gt;"<br>&nbsp;&nbsp; Response.Write "&lt;TR&gt;&lt;TD colspan='5' height='1' bgcolor='#E6E7E4'&gt;&lt;/td&gt;&lt;/tR&gt;"<br>&nbsp;&nbsp; <br>&nbsp; next&nbsp; <br>&nbsp; %&gt;<br>&nbsp; &lt;tr&gt;&lt;td height="30" align="center"&gt;<br>&nbsp; &lt;%<br>&nbsp; Response.write "总条数：&lt;font color=red&gt;"&amp;totalcount&amp;"&lt;/font&gt;&lt;/td&gt;&lt;td colspan=4&gt;&amp;nbsp;&amp;nbsp;分页&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"<br>&nbsp; for i=1 to pagecount&nbsp; <br>&nbsp;&nbsp; Response.Write "&lt;a href='javascript:sss("&amp;i&amp;")' style='color:#398CE7'&gt;"&amp;i&amp;"&lt;/a&gt;&amp;nbsp;&amp;nbsp;"<br>&nbsp; next<br>&nbsp; %&gt;<br>&nbsp; <br>&nbsp; &lt;/td&gt;&lt;/tr&gt; <br>&nbsp; &lt;%<br>else<br>&nbsp;Response.Write "&lt;tr&gt;&lt;td colspan=5 align=center&gt;无纪录&lt;/td&gt;&lt;/tr&gt;"<br>end if<br>%&gt;<br>&lt;/table&gt; </p>
<img src ="http://www.cnblogs.com/richie214/aggbug/499821.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41921/" target="_blank">[新闻]Internet 另一超级漏洞被公布</a>]]></description></item><item><title>在ASP中使用事务处理数据库增/删/改操作</title><link>http://www.cnblogs.com/richie214/archive/2006/09/08/499123.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Fri, 08 Sep 2006 11:32:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/08/499123.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/499123.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/08/499123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/499123.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/499123.html</trackback:ping><description><![CDATA[<p>ASP中对数据库表的操作(INSERT/UPDATE/DELETE)，可使用事务处理，并支持多事务处理。</p>
<p>在ASP的数据库对象连接对象中，提供了以下属性：</p>
<p>BeginTrans 事务开始</p>
<p>CommitTrans 事务提交</p>
<p>RollbackTrans 事务回滚</p>
<p>&lt;% </p>
<p>On Error Resume Next &#8217;错误发生后继续处理<br>'Asp中使用事务 <br>Set conn=Server.CreateObject("ADODB.Connection") <br>conn.Open "course_dsn","course_user","course_password" <br>conn.begintrans '开始事务 </p>
<p>sql="delete from user_info" <br>set rs=server.createobject("adodb.recordset") <br>rs.open sql,conn,3,3 <br>if conn.errors.count&gt;0 then '有错误发生 <br>&nbsp; conn.rollbacktrans '回滚 <br>&nbsp; set rs=nothing <br>&nbsp; conn.close <br>&nbsp; set conn=nothing <br>&nbsp; response.write "交易失败，回滚至修改前的状态！" <br>&nbsp; response.end <br>else <br>&nbsp; conn.committrans '提交事务 <br>&nbsp; set rs=nothing <br>&nbsp; conn.close <br>&nbsp; set conn=nothing <br>&nbsp; response.write "交易成功！" <br>&nbsp; response.end <br>end if </p>
<p>%&gt;</p>
<p>在ASP中，不提供事务的结束，BeginTrans只作用于自己的域，类似于变量声明一样，如果在函数体内BeginTrans，则事务只作用于本函数体，如果BeginTrans在函数体外，处于页面级，则事务的作用域从BeginTrans开始，到页面的结束均处于事务的管理状态下。</p>
<img src ="http://www.cnblogs.com/richie214/aggbug/499123.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41920/" target="_blank">[新闻]3 个独特的未来搜索引擎</a>]]></description></item><item><title>Asp 中常用的函数用法及详解</title><link>http://www.cnblogs.com/richie214/archive/2006/09/06/495855.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Tue, 05 Sep 2006 16:19:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/06/495855.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/495855.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/06/495855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/495855.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/495855.html</trackback:ping><description><![CDATA[<p>Array()<br>　　函数说明: 返回一个数组<br>　　语法格式: Array(list)<br>　　参数说明: 字符，数字均可<br>　　代码范例: Dim User=Array("张三","李四","王五")<br>　　返回结果: 建立了一个包含3个元素的数组</p>
<p>CInt()<br>　　函数说明: 将一个表达式转化为数字类型<br>　　语法格式: CInt(expression)<br>　　参数说明: 任何有效的字符均可<br>　　代码范例: CInt(236.42)<br>　　返回结果: 236 (如果字符串为空，则返回0值)</p>
<p>CreateObject()<br>　　函数说明: 建立和返回一个已注册的ACTIVEX组件的实例。<br>　　语法格式: CreateObject(objName)<br>　　参数说明: objName 是任何一个有效、已注册的ActiveX组件的名字.<br>　　代码范例: Set Conn=Server.CreateObject("Adodb.Connection")<br>　　返回结果:无</p>
<p>CStr()<br>　　函数说明: 转化一个表达式为字符串.<br>　　语法格式: CStr(expression)<br>　　参数说明: expression 是任何有效的表达式。<br>　　代码范例: Response.Write CStr(123)<br>　　返回结果: "123"</p>
<p>Date()<br>　　函数说明: 返回当前系统日期.<br>　　语法格式: Date()<br>　　参数说明: 无<br>　　代码范例: Date()<br>　　返回结果: 2004-09-14</p>
<p>DateAdd()<br>　　函数说明: 返回一个被改变了的日期。<br>　　语法格式: DateAdd(timeinterval,number,date)<br>　　参数说明: timeinterval是要增加的时间间隔类型，如"y"，"m"，"d"，"h"等等; number是要增加的时间间隔的数量;date是时间增加的基准时间.<br>　　代码范例: DataAdd("m",1,CDate("2004-09-14 17:12:23"))<br>　　返回结果: 2004-10-14 17:12:23<br>&nbsp;这里有一个技巧（对于初学者而言），如果number为负数，则相当于减去Abs(number)个时间间隔。</p>
<p>DateDiff()<br>　　函数说明: 返回两个日期之间的差值 。<br>　　语法格式: DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear&gt;&gt;)<br>　　参数说明: timeinterval 表示相隔时间的类型，如"M"表示"月"。<br>　　代码范例: DateDiff("d","2000-1-1","1999-8-4")<br>　　返回结果: 从1999-8-4 到2000年还有 150 天.</p>
<p>Day()<br>　　函数说明: 返回一个月的第几日 .<br>　　语法格式: Day(date)<br>　　参数说明: date 是任何有效的日期。<br>　　代码范例: Day(CDate("2004-09-14"))<br>　　返回结果: 14</p>
<p>FormatCurrency()<br>　　函数说明: 返回表达式，此表达式已被格式化为货币值<br>　　语法格式: FormatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit&gt;&gt;&gt;&gt;)<br>　　参数说明: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置; 　　LeadingDigit 三态常数，指示是否显示小数值小数点前面的零。<br>　　代码范例: <br>　　返回结果: $34.35</p>
<p>FormatDateTime()<br>　　函数说明: 返回表达式，此表达式已被格式化为日期或时间<br>　　语法格式: FormatDateTime(Date, [, NamedFormat&gt;)<br>　　参数说明: NamedFormat 指示所使用的日期/时间格式的数值，如果省略，则使用 vbGeneralDate.<br>　　代码范例: <br>　　返回结果: Wednesday, August 04, 1999</p>
<p>FormatNumber()<br>　　函数说明: 返回表达式，此表达式已被格式化为数值.<br>　　语法格式: FormatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit&gt;&gt;&gt;&gt;)<br>　　参数说明: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。.<br>　　代码范例: <br>　　返回结果: 45.325</p>
<p>FormatPercent()<br>　　函数说明: 返回表达式，此表达式已被格式化为尾随有 % 符号的百分比（乘以 100 ）。 (%)<br>　　语法格式: FormatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit&gt;&gt;&gt;&gt;)<br>　　参数说明: 同上.<br>　　代码范例: <br>　　返回结果: 45.267%</p>
<p>Hour()<br>　　函数说明: 以24时返回小时数.<br>　　语法格式: Hour(time)<br>　　参数说明:<br>　　代码范例: <br>　　返回结果: 16<br>　　(Hour has been converted to 24-hour system)</p>
<p>Instr()<br>　　函数说明: 返回字符或字符串在另一个字符串中第一次出现的位置.<br>　　语法格式: Instr([start, &gt; strToBeSearched, strSearchFor [, compare&gt;)<br>　　参数说明: Start为搜索的起始值，strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符compare 比较方式（详细见ASP常数）<br>　　代码范例: Instr(1,"abcdefgabcdefg","bc")<br>　　返回结果: 2</p>
<p>InstrRev()<br>　　函数说明: 同上，只是从字符串的最后一个搜索起<br>　　语法格式: InstrRev([start, &gt; strToBeSearched, strSearchFor [, compare&gt;)<br>　　参数说明: 同上.<br>　　代码范例: InstrRev(1,"abcdefgabcdefg","bc")<br>　　返回结果: 9</p>
<p><br>Int()<br>　　函数说明: 返回数值类型,不四舍五入。<br>　　语法格式: Int(expression)<br>　　参数说明:expression是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: 32</p>
<p>IsArray()<br>　　函数说明: 判断一对象是否为数组，返回布尔值 .<br>　　语法格式: IsArray(expression)<br>　　参数说明:expression<br>　　代码范例: <br>　　返回结果: True/False</p>
<p>IsDate()<br>　　函数说明: 判断一对象是否为日期，返回布尔值<br>　　语法格式: IsDate(expression)<br>　　参数说明: expression是任意合法的表达式。<br>　　代码范例: IsDate("abc")<br>　　返回结果: False</p>
<p>IsEmpty()<br>　　函数说明: 判断一对象是否初始化，返回布尔值.<br>　　语法格式: IsEmpty(expression)<br>　　参数说明:expression是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: True/False</p>
<p>IsNull()<br>　　函数说明: 判断一对象是否为空，返回布尔值.<br>　　语法格式: IsNull(expression)<br>　　参数说明:expression是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: True/False<br>　　<br>IsNumeric()<br>　　函数说明: 判断一对象是否为数字，返回布尔值.<br>　　语法格式: IsNumeric(expression)<br>　　参数说明:expression是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: True/False<br>　　就算数字加了引号，ASP还是认为它是数字。</p>
<p>IsObject()<br>　　函数说明: 判断一对象是否为对象，返回布尔值.<br>　　语法格式: IsObject(expression)<br>　　参数说明:expression是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: True/False</p>
<p><br>LBound()<br>　　函数说明: 返回指定数组维的最小可用下标.<br>　　语法格式: Lbound(arrayname [, dimension&gt;)<br>　　参数说明: dimension 指明要返回哪一维下界的整数。使用 1 表示第一维，2 表示第二维，以此类推。如果省略 dimension 参数，默认值为 1.<br>　　代码范例: <br>　　返回结果: </p>
<p>LCase()<br>　　函数说明: 返回字符串的小写形式<br>　　语法格式: Lcase(string)<br>　　参数说明: string是任意合法的表达式。<br>　　代码范例: LCase("THIS Is A Test!")<br>　　返回结果: this is a test!</p>
<p>Left()<br>　　函数说明: 返回字符串左边第length个字符以前的字符（含第length个字符).<br>　　语法格式: Left(string, length)<br>　　参数说明:string是原字符串，length是要取得的字符个数。<br>　　代码范例: Left("Left",3)<br>　　返回结果: Lef</p>
<p>Len()<br>　　函数说明: 返回字符串的长度.<br>　　语法格式: Len(string | varName)<br>　　参数说明:string是任意合法的表达式。<br>　　代码范例: <br>　　返回结果: 15</p>
<p>LTrim()<br>　　函数说明: 去掉字符串左边的空格.<br>　　语法格式: LTrim(string)<br>　　参数说明:string为字符串<br>　　代码范例: LTrim("&nbsp;&nbsp;&nbsp;&nbsp; This is a test!&nbsp; ")<br>　　返回结果: "This is a test!&nbsp; "</p>
<p>Mid()<br>　　函数说明: 返回特定长度的字符串(从start开始,长度为length).<br>　　语法格式: Mid(string, start [, length&gt;)<br>　　参数说明:string是原字符串，start为开始截取的位置，length为截取的字符串长度<br>　　代码范例: Mid("abcdefg",2,3)<br>　　返回结果: bcd<br>&nbsp;如果省略length，则截取从start位置到末尾的所有字符。</p>
<p>Minute()<br>　　函数说明: 返回时间的分钟.<br>　　语法格式: Minute(time)<br>　　参数说明:time是任意合法的日期表达式。<br>　　代码范例: Minute("2004-09-14 17:12:23")<br>　　返回结果: 14</p>
<p>Month()<br>　　函数说明: 返回月份.<br>　　语法格式: Month(date)<br>　　参数说明: date是任意合法的日期表达式。<br>　　代码范例: Month("2004-09-14 17:12:23")<br>　　返回结果: 9</p>
<p>MonthName()<br>　　函数说明: 以本地系统格式返回用于识别特定月份的字符串.<br>　　语法格式: MonthName(month, [, Abb&gt;)<br>　　参数说明: month是给定月的数字表示; Abb (可选的)是一个逻辑值，用于控制是否显示月份缩写.True表示显示月份缩写，False则不显示。<br>　　代码范例: MonthName("2004-09-14 17:12:23")<br>　　返回结果: September</p>
<p>Now()<br>　　函数说明: Returns the current system date and time.<br>　　语法格式: Now()<br>　　参数说明: 无<br>　　代码范例: Now()<br>　　返回结果: 2004-09-14 17:12:23<br>&nbsp;这是我的时间，你调用的时候应该是你当时的时间。</p>
<p>Replace()<br>　　函数说明: 返回一个字符串strToBeSearched中的子字符串strSearchFor被另一个字符串strReplaceWith替换count次后的字符串。.<br>　　语法格式: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start [, count [, compare&gt;&gt;&gt;)<br>　　参数说明: strToBeSearched是被替换的字符串; strSearchFor是要在strToBeSearched中查找的子字符串; strReplace是要替换成的字符串; start (可选的)是开始搜索的位置; count (可选的)是要替换的次数，省略则全部替换。<br>　　代码范例: Replace("This is an apple!","apple","orange")<br>　　返回结果: This is an orange!</p>
<p>Right()<br>　　函数说明: 返回字符串右边第length个字符以前的字符（含第length个字符).<br>　　语法格式: Right(string, length)<br>　　参数说明: string是原字符串，length是要截取的字符个数。<br>　　代码范例: Right("right",3)<br>　　返回结果: ght</p>
<p>Rnd()<br>　　函数说明: 产生一个随机数.<br>　　语法格式: Rnd [ (number) &gt;<br>　　参数说明:<br>　　代码范例: <br>　　返回结果: 任何一个在0 到 1 之间的数</p>
<p>Round()<br>　　函数说明: 返回按指定位数进行四舍五入的数值.<br>　　语法格式: Round(expression [, numRight&gt;)<br>　　参数说明: numRight数字表明小数点右边有多少位进行四舍五入。如果省略，则 Round 函数返回整数.<br>　　代码范例: Round(1234.567,2)<br>　　错误返回结果: 1234.570(注：感谢yippee 的提示，由于本人的疏忽，也是受了SqlServer的影响才有此<br>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 错误结果，同时在这里也提醒大家，SqlServer查询分析器的Round会得到此<br>&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 正确返回结果:1234.57</p>
<p>Rtrim()<br>　　函数说明: 去掉字符串右边的字符串.<br>　　语法格式: Rtrim(string)<br>　　参数说明:<br>　　代码范例: RTim("&nbsp;&nbsp; This is a test!&nbsp;&nbsp; ")<br>　　返回结果: "&nbsp;&nbsp; This is a test!"</p>
<p>Second()<br>　　函数说明: 返回秒.<br>　　语法格式: Second(expression)<br>　　参数说明: expression是任意合法的时间表达式。<br>　　代码范例: MonthName("2004-09-14 17:12:23")<br>　　返回结果: 23</p>
<p>StrReverse()<br>　　函数说明: 反排一字符串<br>　　语法格式: StrReverse(string)<br>　　参数说明:<br>　　代码范例: StrReverse("This is a test!")<br>　　返回结果: "!tset a si sihT"</p>
<p>Time()<br>　　函数说明: 返回系统时间.<br>　　语法格式: Time()<br>　　参数说明: .<br>　　代码范例: Time()<br>　　返回结果: 17:12:23</p>
<p>Trim()<br>　　函数说明: 去掉字符串左右的空格.<br>　　语法格式: Trim(string)<br>　　参数说明: string是任意合法的字符串表达式。<br>　　代码范例: Trim("&nbsp;&nbsp; This is a test!&nbsp;&nbsp; ")<br>　　返回结果: "This is a test!"</p>
<p>UBound()<br>　　函数说明: 返回指定数组维数的最大可用下标.<br>　　语法格式: Ubound(arrayname [, dimension&gt;)<br>　　参数说明: dimension (optional) 指定返回哪一维上界的整数。1 表示第一维，2 表示第二维，以此类推。如果省略 dimension 参数，则默认值为 1.<br>　　代码范例: <br>　　返回结果: 2</p>
<p>UCase()<br>　　函数说明: 返回字符串的大写形式.<br>　　语法格式: UCase(string)<br>　　参数说明:<br>　　代码范例: UCase("This is a test!")<br>　　返回结果: THIS IS A TEST!</p>
<p>VarType()<br>　　函数说明: 返回指示变量子类型的值<br>　　语法格式: VarType(varName)<br>　　参数说明:varName是任意可用的表达式<br>　　代码范例: <br>　　返回结果: 2(数字)</p>
<p>WeekDay()<br>　　函数说明: 返回在一周的第几天.<br>　　语法格式: WeekDay(date [, firstdayofweek&gt;)<br>　　参数说明: date是任意合法的时间表达式<br>　　代码范例: WeekDay("2004-09-14 17:12:23")<br>　　返回结果: 3(星期二)<br>&nbsp;注意外国人的习惯，周日为第一天，既是1，周一是第二天既是2，依此类推</p>
<p>WeekDayName()<br>　　函数说明: 返回一周第几天的名字.<br>　　语法格式: WeekDayName(date [, Abb [, firstdayofweek&gt;&gt;)<br>　　参数说明: date是任意合法的时间表达式，Abb(可选的)Boolean 值，指明是否缩写表示星期各天的名称。如果省略， 默认值为 False，即不缩写星期各天的名称.firstdayofweek指明星期第一天的数值<br>　　代码范例: WeekDayName("2004-09-14 17:12:23")<br>　　返回结果: 星期二</p>
<p>Year()<br>　　函数说明: 返回当前的年份.<br>　　语法格式: Year(date)<br>　　参数说明:date是任意合法的时间表达式。<br>　　代码范例: Year("2004-09-14 17:12:23")<br>　　返回结果: 2004</p>
<img src ="http://www.cnblogs.com/richie214/aggbug/495855.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41919/" target="_blank">[新闻]诺基亚新机N85 N79发布</a>]]></description></item><item><title>使用 Input Type="File" 的一些技巧和注意事项（添加中）</title><link>http://www.cnblogs.com/richie214/archive/2006/09/02/493126.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Sat, 02 Sep 2006 09:09:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/02/493126.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/493126.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/02/493126.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/493126.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/493126.html</trackback:ping><description><![CDATA[<div align=left><font size=2><strong><span style="FONT-SIZE: 18pt">&lt;&lt; 解决上传大文件的办法 &gt;&gt;<br></span><br></strong>====================================================<br>在Asp.net的中使用<font color=#0000ff>&lt;input type="file" /&gt;</font>控件上传文件对文件的大小有限制,默认情况下大概在4m左右,如果上传再大的文件时就会出页面无法显示的错误.</font></div>
<div align=left><br><font size=2>具体的方法是，修改web.config文件中的参数可以设置该控件上传文件的大小，web.config中配置如下：<br>在<font color=#0000ff>&lt;system.web&gt;</font>节点下增加<font color=#0000ff><font color=#000000>"</font>&lt;httpRuntime maxRequestLength="409600"/&gt;</font><font color=#000000>"</font>可以来设置&lt;input type='file' /&gt;控件上传文件的大小,<font color=#0000ff>maxRequestLength</font>以字节位单位，所以要需要传的大小 xM*1024 就好啦。</font></div>
<div align=left>&nbsp;</div>
<div align=left><font size=2>不过在IIS6.0里已经没有此问题了<br>====================================================</font></div>
<img src ="http://www.cnblogs.com/richie214/aggbug/493126.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41918/" target="_blank">[新闻]数据库市场:微软和甲骨文快速进步 威胁IBM</a>]]></description></item><item><title>使用 Asp(vbs) 来读取 XML 数据岛 来制作网站菜单</title><link>http://www.cnblogs.com/richie214/archive/2006/09/02/492691.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Fri, 01 Sep 2006 16:26:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/09/02/492691.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/492691.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/09/02/492691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/492691.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/492691.html</trackback:ping><description><![CDATA[摘要: 总的来说还得使用到Microsoft的ActiveX创建XML对象：createObject("Microsoft.XMLDOM")读取节点：selectSingleNode("nodename") //nodename为节点名。读取属性：attributes.getNamedItem("attribute") //attribute为节点中所具有的属性名。加载Xml文档：Load(Server.&nbsp;&nbsp;<a href='http://www.cnblogs.com/richie214/archive/2006/09/02/492691.html'>阅读全文</a><img src ="http://www.cnblogs.com/richie214/aggbug/492691.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41918/" target="_blank">[新闻]数据库市场:微软和甲骨文快速进步 威胁IBM</a>]]></description></item><item><title>使用Drawing类为图片添加图片水印</title><link>http://www.cnblogs.com/richie214/archive/2006/08/31/491218.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Thu, 31 Aug 2006 04:26:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/08/31/491218.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/491218.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/08/31/491218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/491218.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/491218.html</trackback:ping><description><![CDATA[<p>//加水印效果</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Drawing.Image image = System.Drawing.Image.FromFile(path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Drawing.Image copyImage = System.Drawing.Image.FromFile( Server.MapPath(".") + "/../../images/copy.gif");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics g = Graphics.FromImage(image);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.DrawImage(copyImage, new Rectangle(image.Width-copyImage.Width, image.Height-copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.Dispose();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string newPath = Server.MapPath("UploadFile/"+Cyear+"-"+Cmonth+"/")+"9"+newname;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image.Save(newPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image.Dispose();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(File.Exists(path))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File.Delete(path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp; </p>
<img src ="http://www.cnblogs.com/richie214/aggbug/491218.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41917/" target="_blank">[新闻]深度分析：全球千亿美元市值IT企业7月榜单点评</a>]]></description></item><item><title>XmlHttp.readyState属性整理（陆续加入中）</title><link>http://www.cnblogs.com/richie214/archive/2006/08/19/481440.html</link><dc:creator>メ冰枫ぱ雪</dc:creator><author>メ冰枫ぱ雪</author><pubDate>Sat, 19 Aug 2006 12:11:00 GMT</pubDate><guid>http://www.cnblogs.com/richie214/archive/2006/08/19/481440.html</guid><wfw:comment>http://www.cnblogs.com/richie214/comments/481440.html</wfw:comment><comments>http://www.cnblogs.com/richie214/archive/2006/08/19/481440.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/richie214/comments/commentRss/481440.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/richie214/services/trackbacks/481440.html</trackback:ping><description><![CDATA[<p><font face=Verdana>readyState<br>返回XMLHTTP请求的当前状态</font></p>
<p><font face=Verdana>语法<br>lValue = oXMLHttpRequest.readyState;<br>Example<br>var XmlHttp;<br>XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");</font></p>
<p><font face=Verdana>function send() {<br>&nbsp;&nbsp; XmlHttp.onreadystatechange = doHttpReadyStateChange;<br>&nbsp;&nbsp; XmlHttp.open("GET", "http://localhost/sample.xml", true);<br>&nbsp;&nbsp; XmlHttp.send();<br>}</font></p>
<p><font face=Verdana>function doHttpReadyStateChange() {<br>&nbsp;&nbsp; if (XmlHttp.readyState == 4) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("Done");<br>&nbsp;&nbsp; }<br>}<br>备注<br>变量，此属性只读，状态用长度为4的整型表示.定义如下：</font></p>
<p><font face=Verdana>0 (未初始化) 对象已建立，但是尚未初始化（尚未调用open方法） <br>1 (初始化) 对象已建立，尚未调用send方法 <br>2 (发送数据) send方法已调用，但是当前的状态及http头未知 <br>3 (数据传送中) 已接收部分数据，因为响应及http头不全，这时通过responseBody和responseText获取部分数据会出现错误， <br>4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据 </font></p>
<img src ="http://www.cnblogs.com/richie214/aggbug/481440.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41916/" target="_blank">[新闻]中移动上半年净利549亿元 每天盈利3亿</a>]]></description></item></channel></rss>