<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>asp.net学习在全</title>
	<atom:link href="http://aspnet.blog.techweb.com.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://aspnet.blog.techweb.com.cn</link>
	<description>又一个 blog.techweb.com.cn Blogs Blog</description>
	<pubDate>Sun, 09 Nov 2008 08:23:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Hello world!</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/1</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/1#comments</comments>
		<pubDate>Sun, 09 Nov 2008 08:23:37 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to blog.techweb.com.cn Blogs. This is your first post. Edit or delete it, then start blogging!
]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://blog.techweb.com.cn/">blog.techweb.com.cn Blogs</a>. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/1/feed</wfw:commentRss>
		</item>
		<item>
		<title>Asp.net(c#)实现多线程断点续传</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/800</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/800#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnetc%e5%ae%9e%e7%8e%b0%e5%a4%9a%e7%ba%bf%e7%a8%8b%e6%96%ad%e7%82%b9%e7%bb%ad%e4%bc%a0/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; System.IO.Stream iStream = null; &#160;&#160; &#160;&#160; // Buffer to read 10K bytes in chunk: &#160;&#160; byte[] buffer = new Byte[10240]; &#160;&#160; &#160;&#160; // Length of the file: &#160;&#160; int length; &#160;&#160; &#160;&#160; // Total bytes to read: &#160;&#160; long dataToRead; &#160;&#160; &#160;&#160; // Identify the file to download including its path. &#160;&#160; string filepath [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; System.IO.Stream iStream = null; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Buffer to read 10K bytes in chunk: <BR>&nbsp;&nbsp; byte[] buffer = new Byte[10240]; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Length of the file: <BR>&nbsp;&nbsp; int length; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Total bytes to read: <BR>&nbsp;&nbsp; long dataToRead; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Identify the file to download including its path. <BR>&nbsp;&nbsp; string filepath = @&#8221;E:\software\SQL Server 2000 Personal Edition.ISO&#8221;; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Identify the file name. <BR>&nbsp;&nbsp; string filename = System.IO.Path.GetFileName(filepath); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; try <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; // Open the file. <BR>&nbsp;&nbsp; iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, <BR>&nbsp;&nbsp; System.IO.FileAccess.Read,System.IO.FileShare.Read); <BR>&nbsp;&nbsp; Response.Clear(); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Total bytes to read: <BR>&nbsp;&nbsp; dataToRead = iStream.Length; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; long p = 0; <BR>&nbsp;&nbsp; if(Request.Headers["Range"]!=null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; Response.StatusCode = 206; <BR>&nbsp;&nbsp; p = long.Parse( Request.Headers["Range"].Replace(&#8221;bytes=&#8221;,&#8221;").Replace(&#8221;-&#8221;,&#8221;")); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; if(p != 0) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; Response.AddHeader(&#8221;Content-Range&#8221;,&#8221;bytes &#8221; + p.ToString() + &#8220;-&#8221; + ((long)(dataToRead - 1)).ToString() + &#8220;/&#8221; + dataToRead.ToString()); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; Response.AddHeader(&#8221;Content-Length&#8221;,((long)(dataToRead-p)).ToString()); <BR>&nbsp;&nbsp; Response.ContentType = &#8220;application/octet-stream&#8221;; <BR>&nbsp;&nbsp; Response.AddHeader(&#8221;Content-Disposition&#8221;, &#8220;attachment; filename=&#8221; + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename))); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; iStream.Position = p; <BR>&nbsp;&nbsp; dataToRead = dataToRead - p; <BR>&nbsp;&nbsp; // Read the bytes. <BR>&nbsp;&nbsp; while (dataToRead &gt; 0) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; // Verify that the client is connected. <BR>&nbsp;&nbsp; if (Response.IsClientConnected) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; // Read the data in buffer. <BR>&nbsp;&nbsp; length = iStream.Read(buffer, 0, 10240); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Write the data to the current output stream. <BR>&nbsp;&nbsp; Response.OutputStream.Write(buffer, 0, length); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // Flush the data to the HTML output. <BR>&nbsp;&nbsp; Response.Flush(); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; buffer= new Byte[10240]; <BR>&nbsp;&nbsp; dataToRead = dataToRead - length; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; else <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; //prevent infinite loop if user disconnects <BR>&nbsp;&nbsp; dataToRead = -1; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; catch (Exception ex) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; // Trap the error, if any. <BR>&nbsp;&nbsp; Response.Write(&#8221;Error : &#8221; + ex.Message); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; finally <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; if (iStream != null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; //Close the file. <BR>&nbsp;&nbsp; iStream.Close(); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; Response.End(); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/800/feed</wfw:commentRss>
		</item>
		<item>
		<title>动态控制Page页的Head信息</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/799</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/799#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/%e5%8a%a8%e6%80%81%e6%8e%a7%e5%88%b6page%e9%a1%b5%e7%9a%84head%e4%bf%a1%e6%81%af/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 在以前的ASP程序里我们经常用使用Response.Write动态输出网页Header信息,但在ASP.NET里这个所谓代码与UI分离的指导思想不再希望我们这样做了(当然如果您愿意还可以,这毕竟只是建议而已),以前见过别人用&#60;title ranut=&#8221;server&#8221; id=&#8221;titleControl&#8221;&#62;Default Title&#60;/title&#62;设置标题的,但本人认为不是很好,因为这会产生多余的id=&#8221;titleControl&#8221; 个人感觉使用Literal控件控制比较好,因为它不会产生一个多余的字符:),也有人使用js的动态设置标题,但这你让搜索引擎怎么办? &#160;&#160; &#160;&#160;动态控制Page页的Head信息其实很简单 &#160;&#160;先看演示:&#160;http://www.lvjiyong.com/demo/aspnet/seth&#8230; &#160;&#160;演示做的很简单,大家可以下了源码好好看,注解里面都有了 &#160;&#160; &#160;&#160;主要使用了Literal与PlaceHolder &#160;&#160;方法放置在BasePage里，下次让WebForm继承BasePage类就可以调用了 &#160;&#160;使用Literal设置Title信息 &#160;&#160;使用PlaceHolder载入样式表与脚本 &#160;&#160;Literal允许我们直接设置文本信息,使用时我们先让程序查找是否有指定的Literal控件,如果有则设置Text &#160;&#160; &#160;&#160; &#160;&#160; /**//// &#60;summary&#62; &#160;&#160; /// 设置Head信息 &#160;&#160; /// &#60;/summary&#62; &#160;&#160; /// &#60;param name=&#8221;_name&#8221;&#62;控件&#60;/param&#62; &#160;&#160; /// &#60;param name=&#8221;_control&#8221;&#62;文本&#60;/param&#62; &#160;&#160; private void setHeader(string _control,string _text) &#160;&#160; { &#160;&#160; Literal obj = this.FindControl(_control) as Literal; &#160;&#160; if(obj != null) &#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 在以前的ASP程序里我们经常用使用Response.Write动态输出网页Header信息,但在ASP.NET里这个所谓代码与UI分离的指导思想不再希望我们这样做了(当然如果您愿意还可以,这毕竟只是建议而已),以前见过别人用&lt;title ranut=&#8221;server&#8221; id=&#8221;titleControl&#8221;&gt;Default Title&lt;/title&gt;设置标题的,但本人认为不是很好,因为这会产生多余的id=&#8221;titleControl&#8221; 个人感觉使用Literal控件控制比较好,因为它不会产生一个多余的字符:),也有人使用js的动态设置标题,但这你让搜索引擎怎么办? <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;动态控制Page页的Head信息其实很简单 <BR>&nbsp;&nbsp;先看演示:&nbsp;<a href="http://www.lvjiyong.com/demo/aspnet/setheader/" title="http://www.lvjiyong.com/demo/aspnet/setheader/" target="_blank">http://www.lvjiyong.com/demo/aspnet/seth&#8230;</a> <BR>&nbsp;&nbsp;演示做的很简单,大家可以下了源码好好看,注解里面都有了 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;主要使用了Literal与PlaceHolder <BR>&nbsp;&nbsp;方法放置在BasePage里，下次让WebForm继承BasePage类就可以调用了 <BR>&nbsp;&nbsp;使用Literal设置Title信息 <BR>&nbsp;&nbsp;使用PlaceHolder载入样式表与脚本 <BR>&nbsp;&nbsp;Literal允许我们直接设置文本信息,使用时我们先让程序查找是否有指定的Literal控件,如果有则设置Text <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; /**//// &lt;summary&gt; <BR>&nbsp;&nbsp; /// 设置Head信息 <BR>&nbsp;&nbsp; /// &lt;/summary&gt; <BR>&nbsp;&nbsp; /// &lt;param name=&#8221;_name&#8221;&gt;控件&lt;/param&gt; <BR>&nbsp;&nbsp; /// &lt;param name=&#8221;_control&#8221;&gt;文本&lt;/param&gt; <BR>&nbsp;&nbsp; private void setHeader(string _control,string _text) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; Literal obj = this.FindControl(_control) as Literal; <BR>&nbsp;&nbsp; if(obj != null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; obj.Text = _text; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp;比如我们在Head区设置了&lt;asp:Literal id=&#8221;PageTitle&#8221; runat=&#8221;server&#8221; /&gt;,我们可以这样设置标题 <BR>&nbsp;&nbsp;这里先准备一个方法 <BR>&nbsp;&nbsp; /**//// &lt;summary&gt; <BR>&nbsp;&nbsp; /// 设置网页标题 <BR>&nbsp;&nbsp; /// &lt;/summary&gt; <BR>&nbsp;&nbsp; /// &lt;param name=&#8221;_title&#8221;&gt;网页标题&lt;/param&gt; <BR>&nbsp;&nbsp; protected void SetTitle(string _title) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; setHeader(&#8221;PageTitle&#8221;,&#8221;&lt;title&gt;&#8221; + _title + &#8220;&lt;/title&gt;&#8221;); <BR>&nbsp;&nbsp; 在WebFrom中我们就可以这样设置标题了 <BR>&nbsp;&nbsp;this.SetTitle(&#8221;吕的部落格&#8221;); <BR>&nbsp;&nbsp;Description,Keywords等的方法一样，不过要设置Meta，这个就不讲了，可以看源码 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;下面我再说一下js与css的载入，这次我们用到的是PlaceHolder控件，为什么用这个不沿用Literal，自己想想 <BR>&nbsp;&nbsp;PlaceHolder一般只占用位置，方便我们动态加载控件，这样载入js与css就方便多了 <BR>&nbsp;&nbsp;首先了也是查找指定的PlaceHolder控件 <BR>&nbsp;&nbsp; /**//// &lt;summary&gt; <BR>&nbsp;&nbsp; /// 查找LoadHeader的PlaceHolder容器 <BR>&nbsp;&nbsp; /// &lt;/summary&gt; <BR>&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt; <BR>&nbsp;&nbsp; private Control findHeader() <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; return this.FindControl(&#8221;LoadHeader&#8221;); <BR>&nbsp;&nbsp; }再是动态加入控件 <BR>&nbsp;&nbsp; /**//// &lt;summary&gt; <BR>&nbsp;&nbsp; /// 装载控件到PlaceHolder控件 <BR>&nbsp;&nbsp; /// &lt;/summary&gt; <BR>&nbsp;&nbsp; /// &lt;param name=&#8221;_obj&#8221;&gt;&lt;/param&gt; <BR>&nbsp;&nbsp; protected void LoadPlaceHolder(HtmlGenericControl _obj) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; objHeader = findHeader() as Control; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //载入脚本文件 <BR>&nbsp;&nbsp; if(objHeader != null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; objHeader.Controls.Add(_obj); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; }要载入CSS或JS我们先用HtmlGenericControl创建子控件然后加到PlaceHolder控件中 <BR>&nbsp;&nbsp; /**//// &lt;summary&gt; <BR>&nbsp;&nbsp; /// 载入指定的样式表文件 <BR>&nbsp;&nbsp; /// &lt;/summary&gt; <BR>&nbsp;&nbsp; /// &lt;param name=&#8221;_cssPath&#8221;&gt;样式表文件地址&lt;/param&gt; <BR>&nbsp;&nbsp; protected void LoadCss(string _cssPath) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; HtmlGenericControl objCss = new HtmlGenericControl(&#8221;link&#8221;); <BR>&nbsp;&nbsp; objCss.Attributes["rel"] = &#8220;stylesheet&#8221;; <BR>&nbsp;&nbsp; objCss.Attributes["type"] = &#8220;text/css&#8221;; <BR>&nbsp;&nbsp; objCss.Attributes["href"] = _cssPath; <BR>&nbsp;&nbsp; objCss.Attributes["media"] = &#8220;screen&#8221;; <BR>&nbsp;&nbsp; this.LoadPlaceHolder(objCss); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp;那我们在WebForm中要载入样式表只要使用 <BR>&nbsp;&nbsp;this.LoadCss(&#8221;样式表地址&#8221;);载入js一样，就不说了 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;在源码中我写的功能比这里说的强一点点，大家可以自己下了看看． <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/799/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.Net项目出错处理方法汇总</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/798</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/798#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnet%e9%a1%b9%e7%9b%ae%e5%87%ba%e9%94%99%e5%a4%84%e7%90%86%e6%96%b9%e6%b3%95%e6%b1%87%e6%80%bb/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; &#160;&#160;1：确认在“配置属性”中的“启用ASP.NET调试&#8221;为&#8221;True&#8221; &#160;&#160;操作步骤: &#160;&#160;VS环境里面，菜单-项目-项目属性（最下得选项）-配置属性（左边第二项）-Debugging－Enable&#160;Asp.Net Debugging 设置为True &#160;&#160;作用： &#160;&#160;确定调试器能过启动IIS来调试asp.net页面! &#160;&#160;2：确认你的&#8221;web.config&#8221;中的&#8221;debug=true&#8221; &#160;&#160;操作步骤 &#160;&#160;打开web.config文件,设置debug=&#8221;true&#8221;； &#160;&#160;作用:配置调试器可以调试该应用程序 &#160;&#160; &#160;&#160;3：若你安装过wind2000 SP4后，则要在命令行执行&#8221;regsvr32 i aspnet_isap.dll&#8221; &#160;&#160;操作步骤: &#160;&#160;开始-运行-cmd-regsvr32 i aspnet_isap.dll &#160;&#160;作用: &#160;&#160;重新注册aspnet_isap.dll &#160;&#160; &#160;&#160;4：在IIS里查看站点信息，选中&#8221;目录安全性&#8221;，里面有&#8221;匿名访问和身份验证控制&#8221;，再点击&#8221;编辑..&#8221;,确认&#8221;集成Windows身份验证&#8221;选项被选中 &#160;&#160;操作步骤: &#160;&#160;我的电脑－右击－管理-应用程序管理-IIS－默认网站-你得站点－右击－目录安全性-认证和访问方式－勾选匿名访问和身份验证控制，编辑－勾选确认&#8221;集成Windows身份验证“ &#160;&#160;作用： &#160;&#160;匿名访问：此处设置不是为了解决你得调试问题，是为了能够使局域网或者广域网中其他用户通过输入你得Ip和网站名称来访问该网站 &#160;&#160;集成Windows身份验证:刚建立得网站身份验证方式为Windows要求必须用windows用户身份访问该网站，不更该IIS，将无法正常调试！ &#160;&#160;5：在IE选项-&#62;&#8221;安全设置&#8221;-&#62;&#8221;自定义级别&#8221;里有&#8221;用户验&#8221;，确认选中&#8221;自动使用当前用户名和密码登录&#8221; &#160;&#160;步骤上述已经详细 &#160;&#160; &#160;&#160;6：运行C:\WINNT\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis.exe -i &#160;&#160;操作步骤; &#160;&#160;cd到C:\WINNT\Microsoft.NET\Framework\v1.0.3705\目录 &#160;&#160;aspnet_regiis.exe -i &#160;&#160;或者start=all progames - visual&#160;studio.net 2003-visual&#160;studio.net tools - command prompt-aspnet_regiis.exe -i &#160;&#160;作用： &#160;&#160;重新注册当前得.net framework版本即(v1.0.3705)到iis，为了解决调试得时候出现您所运行得.net版本不是v1.1得问题 &#160;&#160; &#160;&#160;7：控制面板&#8211;管理工具&#8211;计算机管理&#8211;本地用户和组&#8211;用户,双击ASPNET用户，为其隶属于添加Administrators用户 &#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;1：确认在“配置属性”中的“启用ASP.NET调试&#8221;为&#8221;True&#8221; <BR>&nbsp;&nbsp;操作步骤: <BR>&nbsp;&nbsp;VS环境里面，菜单-项目-项目属性（最下得选项）-配置属性（左边第二项）-Debugging－Enable&nbsp;<a href="http://Asp.Net" title="http://Asp. " target="_blank">Asp.Net</a> Debugging 设置为True <BR>&nbsp;&nbsp;作用： <BR>&nbsp;&nbsp;确定调试器能过启动IIS来调试asp.net页面! <BR>&nbsp;&nbsp;2：确认你的&#8221;web.config&#8221;中的&#8221;debug=true&#8221; <BR>&nbsp;&nbsp;操作步骤 <BR>&nbsp;&nbsp;打开web.config文件,设置debug=&#8221;true&#8221;； <BR>&nbsp;&nbsp;作用:配置调试器可以调试该应用程序 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;3：若你安装过wind2000 SP4后，则要在命令行执行&#8221;regsvr32 i aspnet_isap.dll&#8221; <BR>&nbsp;&nbsp;操作步骤: <BR>&nbsp;&nbsp;开始-运行-cmd-regsvr32 i aspnet_isap.dll <BR>&nbsp;&nbsp;作用: <BR>&nbsp;&nbsp;重新注册aspnet_isap.dll <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;4：在IIS里查看站点信息，选中&#8221;目录安全性&#8221;，里面有&#8221;匿名访问和身份验证控制&#8221;，再点击&#8221;编辑..&#8221;,确认&#8221;集成Windows身份验证&#8221;选项被选中 <BR>&nbsp;&nbsp;操作步骤: <BR>&nbsp;&nbsp;我的电脑－右击－管理-应用程序管理-IIS－默认网站-你得站点－右击－目录安全性-认证和访问方式－勾选匿名访问和身份验证控制，编辑－勾选确认&#8221;集成Windows身份验证“ <BR>&nbsp;&nbsp;作用： <BR>&nbsp;&nbsp;匿名访问：此处设置不是为了解决你得调试问题，是为了能够使局域网或者广域网中其他用户通过输入你得Ip和网站名称来访问该网站 <BR>&nbsp;&nbsp;集成Windows身份验证:刚建立得网站身份验证方式为Windows要求必须用windows用户身份访问该网站，不更该IIS，将无法正常调试！ <BR>&nbsp;&nbsp;5：在IE选项-&gt;&#8221;安全设置&#8221;-&gt;&#8221;自定义级别&#8221;里有&#8221;用户验&#8221;，确认选中&#8221;自动使用当前用户名和密码登录&#8221; <BR>&nbsp;&nbsp;步骤上述已经详细 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;6：运行C:\WINNT\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis.exe -i <BR>&nbsp;&nbsp;操作步骤; <BR>&nbsp;&nbsp;cd到C:\WINNT\Microsoft.NET\Framework\v1.0.3705\目录 <BR>&nbsp;&nbsp;aspnet_regiis.exe -i <BR>&nbsp;&nbsp;或者start=all progames - visual&nbsp;<a href="http://studio.net" title="http://studio. " target="_blank">studio.net</a> 2003-visual&nbsp;<a href="http://studio.net" title="http://studio. " target="_blank">studio.net</a> tools - command prompt-aspnet_regiis.exe -i <BR>&nbsp;&nbsp;作用： <BR>&nbsp;&nbsp;重新注册当前得.net framework版本即(v1.0.3705)到iis，为了解决调试得时候出现您所运行得.net版本不是v1.1得问题 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;7：控制面板&#8211;管理工具&#8211;计算机管理&#8211;本地用户和组&#8211;用户,双击ASPNET用户，为其隶属于添加Administrators用户 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/798/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET入门随想之博德之门 类与实例</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/797</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/797#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnet%e5%85%a5%e9%97%a8%e9%9a%8f%e6%83%b3%e4%b9%8b%e5%8d%9a%e5%be%b7%e4%b9%8b%e9%97%a8-%e7%b1%bb%e4%b8%8e%e5%ae%9e%e4%be%8b/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 内力衡量人的武学修为，而逍遥派的北冥神功实在是宝贝，习此术之人，全身如同一个黑洞，瞬间就将他人一辈子的修炼积累掠为已有，美名其曰&#8221;北冥大水，非由自生&#8221;、&#8221;百川汇海，海纳百川&#8221;。 &#160;&#160; &#160;&#160;　　但虚竹却不知学习此术需要散去原先功力，所以当他被无涯子完全化成一个空空如也的和尚时，禁不住放声大哭。其实此举绝对可以理解，对于一个练武之人而言，内功象征积累，虚竹虽然笨了点，但二十几年的积累，顷刻间说没就没，不啻于精神世界的毁灭。 &#160;&#160; &#160;&#160;　　■ 计算的影响 - 面向过程编程思想 &#160;&#160; &#160;&#160;　　ASP程序员的老祖宗名叫冯·诺依曼，ASP程序员一直以来都按照他的谆谆教导活着。 ASP程序员从来就认为这个世界的所有事情就象人的一生，有一个起点，叫START，还有一个终点，叫END。他要处理的事情，就象人这辈子，从START走到END，没有回头路。 &#160;&#160; &#160;&#160;　　ASP程序员还认为，这个世界的所有事情就象人的一生，分成不同阶段，叫模块。每一个模块都要完成一个相互不同的任务，少年求学，青年生子，中年立命，老年不惑。 &#160;&#160; &#160;&#160;　　ASP程序员又认为，这个世界的所有事情都象人的一生，一共只有三种走法：有时是阔步向前，叫顺序；有时面临选择，叫分支；有时原地打转，徘徊不前，叫循环。 &#160;&#160; &#160;&#160;　　ASP程序员从来就把&#8221;不积跬步无以至千里&#8221;当着座右铭，所以他把所有类似的事情处理过程都积累起来，记忆成一个个函数，以后碰到同类型的事情，就去调用函数。 &#160;&#160; &#160;&#160;　　ASP程序员把这种活法叫着&#8221;面对过程编程思想&#8221;，他平时最关心的，就是过程的模型，最注意的，就是这些过程有没有类似的处理过程可以归纳成函数。 &#160;&#160; &#160;&#160;　　即使是面对网站登录这么件小小的事情，ASP程序员仍然遵循自已的信仰，先对这个过程建模，如图4-1，然后去调用以前所有积累的函数，精心编织这个过程的每一个环节：不是要用户提交登录数据吗？他用response.write 这支画笔按照顺序一笔一划地描述出用户填写页面；不是要校验格式吗？他调用JavaScript函数一个个地检查每一个&#60;input&#62;的value值；不是要审核数据吗？他读取用户数据后翻开厚厚的帐目一个个地查找核对；不是要结果吗？他要么带着用户跳转到指定页面，要么又调用函数告诉用户不要鱼目混珠。 &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;所以ASP程序员活得很开心，他感觉世界尽在他的掌握之中。尽管很早以前有一个位名叫smlltalk的家伙告诉他的这种活法窝囊，当时ASP程序员只是感到不解；又来了个C++说他笨拙，他只是疑惑；还来了个JAVA在他面前耀武扬威，ASP程序员开始彷徨起来。直到有一天，小弟DotNet程序员学成归来，与之促膝长谈，终于，ASP程序员彻底动摇。冥冥之中，记起一位伟人告诫他要与时俱进。但尽管世界在变，ASP程序员依然放不下他多年所积蓄的内力，顷刻间说没就没，不啻于精神世界的毁灭。于是内心有两种呐喊在不断地交织，是在沉默中死去，还是凤凰涅槃？ &#160;&#160;■ 创世纪·六日 - 面向对象编程思想 &#160;&#160; &#160;&#160;　　DotNet程序员信奉OOP教，神是Framework。 &#160;&#160; &#160;&#160;　　第一日，神说，万物皆对象(object)，对象有标识、状态与行为； &#160;&#160; &#160;&#160;　　于是DotNet程序员在大脑中列出Login功能的所有对象：Login对象、Login.aspx页面对象、登录表单frmLogin对象、提示信息lblMessage对象、用户名文本域txtUserName对象、密码文本域对象txtPassword对象和登录按扭btnLogin对象。 &#160;&#160; &#160;&#160;　　第二日，神说，有相同特征和行为的对象抽象为类(class)；对象即为类的一实例； &#160;&#160; &#160;&#160;　　于是DotNet程序员把用户名文本域对象和密码文本域对象抽象成TextBox类，其余分别抽象成Login、Login.aspx、HtmlForm、Label、Button类，并分别实例了类。 &#160;&#160; &#160;&#160;　　第三日，神说，对象的相同特征抽象为属性，相同的行为处理抽象为方法； &#160;&#160; &#160;&#160;　　于是DotNet程序员把实例frmLogin、lblMessage、txtUserName、txtPassword、btnLogin定义成Login类的属性、并定义方法btnLogin_Click。 &#160;&#160; &#160;&#160;private void btnLogin_Click(object sender, System.EventArgs e) { &#160;&#160;　if ((txtUserName.Text==&#8221;孙二娘&#8221;)&#38;&#38;(txtPassword.Text==&#8221;十字坡&#8221;)) [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 内力衡量人的武学修为，而逍遥派的北冥神功实在是宝贝，习此术之人，全身如同一个黑洞，瞬间就将他人一辈子的修炼积累掠为已有，美名其曰&#8221;北冥大水，非由自生&#8221;、&#8221;百川汇海，海纳百川&#8221;。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　但虚竹却不知学习此术需要散去原先功力，所以当他被无涯子完全化成一个空空如也的和尚时，禁不住放声大哭。其实此举绝对可以理解，对于一个练武之人而言，内功象征积累，虚竹虽然笨了点，但二十几年的积累，顷刻间说没就没，不啻于精神世界的毁灭。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　■ 计算的影响 - 面向过程编程思想 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　ASP程序员的老祖宗名叫冯·诺依曼，ASP程序员一直以来都按照他的谆谆教导活着。 ASP程序员从来就认为这个世界的所有事情就象人的一生，有一个起点，叫START，还有一个终点，叫END。他要处理的事情，就象人这辈子，从START走到END，没有回头路。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　ASP程序员还认为，这个世界的所有事情就象人的一生，分成不同阶段，叫模块。每一个模块都要完成一个相互不同的任务，少年求学，青年生子，中年立命，老年不惑。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　ASP程序员又认为，这个世界的所有事情都象人的一生，一共只有三种走法：有时是阔步向前，叫顺序；有时面临选择，叫分支；有时原地打转，徘徊不前，叫循环。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　ASP程序员从来就把&#8221;不积跬步无以至千里&#8221;当着座右铭，所以他把所有类似的事情处理过程都积累起来，记忆成一个个函数，以后碰到同类型的事情，就去调用函数。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　ASP程序员把这种活法叫着&#8221;面对过程编程思想&#8221;，他平时最关心的，就是过程的模型，最注意的，就是这些过程有没有类似的处理过程可以归纳成函数。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　即使是面对网站登录这么件小小的事情，ASP程序员仍然遵循自已的信仰，先对这个过程建模，如图4-1，然后去调用以前所有积累的函数，精心编织这个过程的每一个环节：不是要用户提交登录数据吗？他用response.write 这支画笔按照顺序一笔一划地描述出用户填写页面；不是要校验格式吗？他调用JavaScript函数一个个地检查每一个&lt;input&gt;的value值；不是要审核数据吗？他读取用户数据后翻开厚厚的帐目一个个地查找核对；不是要结果吗？他要么带着用户跳转到指定页面，要么又调用函数告诉用户不要鱼目混珠。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;<IMG src="http://www.knowsky.com/img2005/64481l2fb00s.gif"> <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;所以ASP程序员活得很开心，他感觉世界尽在他的掌握之中。尽管很早以前有一个位名叫smlltalk的家伙告诉他的这种活法窝囊，当时ASP程序员只是感到不解；又来了个C++说他笨拙，他只是疑惑；还来了个JAVA在他面前耀武扬威，ASP程序员开始彷徨起来。直到有一天，小弟DotNet程序员学成归来，与之促膝长谈，终于，ASP程序员彻底动摇。冥冥之中，记起一位伟人告诫他要与时俱进。但尽管世界在变，ASP程序员依然放不下他多年所积蓄的内力，顷刻间说没就没，不啻于精神世界的毁灭。于是内心有两种呐喊在不断地交织，是在沉默中死去，还是凤凰涅槃？ <BR>&nbsp;&nbsp;■ 创世纪·六日 - 面向对象编程思想 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　DotNet程序员信奉OOP教，神是Framework。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　第一日，神说，万物皆对象(object)，对象有标识、状态与行为； <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员在大脑中列出Login功能的所有对象：Login对象、Login.aspx页面对象、登录表单frmLogin对象、提示信息lblMessage对象、用户名文本域txtUserName对象、密码文本域对象txtPassword对象和登录按扭btnLogin对象。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　第二日，神说，有相同特征和行为的对象抽象为类(class)；对象即为类的一实例； <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员把用户名文本域对象和密码文本域对象抽象成TextBox类，其余分别抽象成Login、Login.aspx、HtmlForm、Label、Button类，并分别实例了类。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　第三日，神说，对象的相同特征抽象为属性，相同的行为处理抽象为方法； <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员把实例frmLogin、lblMessage、txtUserName、txtPassword、btnLogin定义成Login类的属性、并定义方法btnLogin_Click。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;private void btnLogin_Click(object sender, System.EventArgs e) { <BR>&nbsp;&nbsp;　if ((txtUserName.Text==&#8221;孙二娘&#8221;)&amp;&amp;(txtPassword.Text==&#8221;十字坡&#8221;)) <BR>&nbsp;&nbsp;　　lblMessage.Text=&#8221;热烈欢迎世界著名武打巨星孙二娘小姐回乡考察投资&#8221;; <BR>&nbsp;&nbsp;　else <BR>&nbsp;&nbsp;　　lblMessage.Text=&#8221;靠,这年头什么都有假的!&#8221;; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;<IMG src="http://www.knowsky.com/img2005/xl67h2x9tqai.gif"> <BR>&nbsp;&nbsp;第四日 神说，类要封装； <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员在类标识、属性和方法前都分别加上public、private、protected。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　第五日 神说，类可以继承和合成； <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员把Login.aspx定义成Login的派生类，在Login.aspx开头加上如下声明语句： <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&lt;%@ Page Inherits=&#8221;WebApplication1.Login&#8221; %&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　第六日 神说，类有多态。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　于是DotNet程序员对自己说，我暂时不需要，随后躺下。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　很快他就睡着，只听见他的梦呓缓缓传来：六日，我就拖几个控件，定义几个ID，加一段事件处理代码，感谢万能的主framework和他的忠实仆役Visual Studio，吸星***，爽！ <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/797/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET 翻页后继续维持排序(1)</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/796</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/796#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnet-%e7%bf%bb%e9%a1%b5%e5%90%8e%e7%bb%a7%e7%bb%ad%e7%bb%b4%e6%8c%81%e6%8e%92%e5%ba%8f1/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 要想实现翻页后继续排序,实现这样的效果: &#160;&#160; &#160;&#160;　　比如共 15笔记录，每页显示10条 &#160;&#160; &#160;&#160;　　则排序时:第一页将前10条记录排序，翻第二页时后五条再单独排序. &#160;&#160; &#160;&#160;　　要注意以下几点: &#160;&#160; &#160;&#160;　　1.如果数据很多,最好不要把数据集放到缓存中(viewstate),影响性能 &#160;&#160; &#160;&#160;　　2. ViewState中存放上次是哪个e.expression并且存放此e.expression是升序还是降序 &#160;&#160; &#160;&#160;　　示例如下: &#160;&#160; &#160;&#160;　　1.现有的排序事件是这样写的,这个是点击上面排序标题时用: &#160;&#160; &#160;&#160;private void grdProjTrace_SortCommand(object source, DataGridSortCommandEventArgs e) &#160;&#160;{ &#160;&#160;　this.grdProjTrace.CurrentPageIndex = 0; &#160;&#160;　DataView dv = 得到数据代码; &#160;&#160;　string strSort = &#8220;&#8221;; &#160;&#160;　string strOrder =&#8221;";//排序方式。0，降序，1升序 &#160;&#160;　if(ViewState["SortExpresstion"] != null) &#160;&#160;　{ &#160;&#160;　　strSort = ViewState["SortExpresstion"].ToString(); &#160;&#160;　　strSort = strSort.Substring(0,strSort.Length -1); &#160;&#160;　　strOrder = ViewState["SortExpresstion"].ToString(); &#160;&#160;　　strOrder [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 要想实现翻页后继续排序,实现这样的效果: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　比如共 15笔记录，每页显示10条 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　则排序时:第一页将前10条记录排序，翻第二页时后五条再单独排序. <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　要注意以下几点: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　1.如果数据很多,最好不要把数据集放到缓存中(viewstate),影响性能 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　2. ViewState中存放上次是哪个e.expression并且存放此e.expression是升序还是降序 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　示例如下: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　1.现有的排序事件是这样写的,这个是点击上面排序标题时用: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;private void grdProjTrace_SortCommand(object source, DataGridSortCommandEventArgs e) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;　this.grdProjTrace.CurrentPageIndex = 0; <BR>&nbsp;&nbsp;　DataView dv = 得到数据代码; <BR>&nbsp;&nbsp;　string strSort = &#8220;&#8221;; <BR>&nbsp;&nbsp;　string strOrder =&#8221;";//排序方式。0，降序，1升序 <BR>&nbsp;&nbsp;　if(ViewState["SortExpresstion"] != null) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　strSort = ViewState["SortExpresstion"].ToString(); <BR>&nbsp;&nbsp;　　strSort = strSort.Substring(0,strSort.Length -1); <BR>&nbsp;&nbsp;　　strOrder = ViewState["SortExpresstion"].ToString(); <BR>&nbsp;&nbsp;　　strOrder = strOrder.Substring(strOrder.Length -1); <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　if(e.SortExpression == &#8220;CustomerName&#8221;) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　if(strSort != &#8220;CustomerName&#8221;) <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　this.ViewState["SortExpresstion"] = ustomerName0&#8243;; <BR>&nbsp;&nbsp;　　　dv.Sort = &#8220;CustomerName DESC&#8221;; <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　　else <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　if(strOrder == &#8220;0&#8243;) <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;CustomerName1&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;CustomerName ASC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　　else <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;CustomerName0&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;CustomerName DESC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　if(e.SortExpression == &#8220;fullName&#8221;) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　if(strSort != &#8220;fullName&#8221;) <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　this.ViewState["SortExpresstion"] = &#8220;fullName0&#8243;; <BR>&nbsp;&nbsp;　　　dv.Sort = &#8220;fullName DESC&#8221;; <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　　else <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　if(strOrder == &#8220;0&#8243;) <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;fullName1&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;fullName ASC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　　else <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;fullName0&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;fullName DESC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　this.grdProjTrace.DataSource = dv; <BR>&nbsp;&nbsp;　this.grdProjTrace.DataBind(); <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/796/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET 翻页后继续维持排序(2)</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/795</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/795#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnet-%e7%bf%bb%e9%a1%b5%e5%90%8e%e7%bb%a7%e7%bb%ad%e7%bb%b4%e6%8c%81%e6%8e%92%e5%ba%8f2/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 2.下面这个方法是自己写的，翻页事件中调用。 &#160;&#160; &#160;&#160;private void ChangePageDataBind() &#160;&#160;{ &#160;&#160;　DataView dv = 得到数据代码; &#160;&#160;　string strSort = &#8220;&#8221;; &#160;&#160;　string strOrder =&#8221;";//排序方式。0，降序，1升序 &#160;&#160;　if(ViewState["SortExpresstion"] != null) &#160;&#160;　{ &#160;&#160;　　strSort = ViewState["SortExpresstion"].ToString(); &#160;&#160;　　strSort = strSort.Substring(0,strSort.Length -1); &#160;&#160;　　strOrder = ViewState["SortExpresstion"].ToString(); &#160;&#160;　　strOrder = strOrder.Substring(strOrder.Length -1); &#160;&#160;　} &#160;&#160;　if(this.ViewState["SortExpresstion"] != null) &#160;&#160;　{ &#160;&#160;　　if(strSort == &#8220;CustomerName&#8221;) &#160;&#160;　　{ &#160;&#160;　　　if(strOrder == &#8220;1&#8243;) &#160;&#160;　　　{ &#160;&#160;　　　　this.ViewState["SortExpresstion"] = &#8220;CustomerName1&#8243;; &#160;&#160;　　　　dv.Sort = &#8220;CustomerName [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 2.下面这个方法是自己写的，翻页事件中调用。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;private void ChangePageDataBind() <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;　DataView dv = 得到数据代码; <BR>&nbsp;&nbsp;　string strSort = &#8220;&#8221;; <BR>&nbsp;&nbsp;　string strOrder =&#8221;";//排序方式。0，降序，1升序 <BR>&nbsp;&nbsp;　if(ViewState["SortExpresstion"] != null) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　strSort = ViewState["SortExpresstion"].ToString(); <BR>&nbsp;&nbsp;　　strSort = strSort.Substring(0,strSort.Length -1); <BR>&nbsp;&nbsp;　　strOrder = ViewState["SortExpresstion"].ToString(); <BR>&nbsp;&nbsp;　　strOrder = strOrder.Substring(strOrder.Length -1); <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　if(this.ViewState["SortExpresstion"] != null) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　if(strSort == &#8220;CustomerName&#8221;) <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　if(strOrder == &#8220;1&#8243;) <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;CustomerName1&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;CustomerName ASC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　　else <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;CustomerName0&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;CustomerName DESC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　if(this.ViewState["SortExpresstion"] != null) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　if(strSort == &#8220;fullName&#8221;) <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　if(strOrder == &#8220;1&#8243;) <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;fullName1&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;fullName ASC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　　else <BR>&nbsp;&nbsp;　　　{ <BR>&nbsp;&nbsp;　　　　this.ViewState["SortExpresstion"] = &#8220;fullName0&#8243;; <BR>&nbsp;&nbsp;　　　　dv.Sort = &#8220;fullName DESC&#8221;; <BR>&nbsp;&nbsp;　　　} <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　this.grdProjTrace.DataSource = dv; <BR>&nbsp;&nbsp;　this.grdProjTrace.DataBind(); <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　上面两方法只要修改要排序的字段名，就可以直接调用了. <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　1、方法很简单实用,这里就不说了。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　2、方法是这样用的: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;　try <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　try <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　this.grdProjTrace.CurrentPageIndex = e.NewPageIndex; <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp;　　catch <BR>&nbsp;&nbsp;　　{ <BR>&nbsp;&nbsp;　　　this.grdProjTrace.CurrentPageIndex = 0; <BR>&nbsp;&nbsp;　　} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;　　this.ChangePageDataBind(); <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;　catch(System.Exception errWS) <BR>&nbsp;&nbsp;　{ <BR>&nbsp;&nbsp;　　//异常 <BR>&nbsp;&nbsp;　} <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/795/feed</wfw:commentRss>
		</item>
		<item>
		<title>谈谈HtmlControl与WebControl的区别与用途</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/794</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/794#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:08:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/%e8%b0%88%e8%b0%88htmlcontrol%e4%b8%8ewebcontrol%e7%9a%84%e5%8c%ba%e5%88%ab%e4%b8%8e%e7%94%a8%e9%80%94-2/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; Web控件和Html控件虽然好多功能相同并且长得很像 &#160;&#160;但是它们的内部实现机制是完全不一样的 &#160;&#160;Web控件要比Html控件执行效率要好 &#160;&#160; &#160;&#160;1. 使用起来也相当方便,举个简单的例子,例如Button的生成: &#160;&#160;Html控件是将庞大控件集合全部弄到页面中，用到哪个功能，就设置一下属性,如下: &#160;&#160;&#60;input type=submit/button runat=server&#62; &#160;&#160;这样会占用相当大的控件资源 &#160;&#160; &#160;&#160;Web控件是将集成式的拆解成单功能的： &#160;&#160;&#60;asp:button id=&#8221;btnOK&#8221; /&#62; &#160;&#160;这样就可以节省不必要的控件所占用的资源了 &#160;&#160; &#160;&#160;2.Web控件具有回送功能,能够用ViewState维持控件的状态. &#160;&#160; Html控件则不能,当点击页面的操作，其状态就会丢失. &#160;&#160; 可以做这样的一个实验: &#160;&#160; I. 分别建立两个文件: a.html b.aspx &#160;&#160; II.在a.html页面中加Html控件的RadioButton和一个button， &#160;&#160; 在b.aspx中加Web控件的RadioButton和一个button &#160;&#160; III.a.html直接双击浏览器运行,b.aspx通过IIS运行 &#160;&#160; IV.在a.html运行界面中，选中RadioButton,再单击Button按钮，会发现RadioButton会 &#160;&#160; 取消选中(丢失其状态),但在b.aspx页面执行同样的操作，RadioButton不会丢失，因为ViewState &#160;&#160; 给它保存了状态. 您可以在运行界面点击浏览器菜单&#8221;查看&#8221;-&#62;“源文件&#8221;,打开Html代码文件， &#160;&#160; 找到加密后的ViewState,类似于下面: &#160;&#160; &#60;input type=&#8221;hidden&#8221; name=&#8221;_VIEWSTATE&#8221; value=&#8221;dDw0ajfmafmjfzzmj4&#8243;/&#62; &#160;&#160; 其实ViewState实现原理也是将一些信息放到隐藏的一个控件中，并且asp.net生成的ViewState信息 &#160;&#160; &#160;&#160; 是存储在客户端的 &#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; Web控件和Html控件虽然好多功能相同并且长得很像 <BR>&nbsp;&nbsp;但是它们的内部实现机制是完全不一样的 <BR>&nbsp;&nbsp;Web控件要比Html控件执行效率要好 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;1. 使用起来也相当方便,举个简单的例子,例如Button的生成: <BR>&nbsp;&nbsp;Html控件是将庞大控件集合全部弄到页面中，用到哪个功能，就设置一下属性,如下: <BR>&nbsp;&nbsp;&lt;input type=submit/button runat=server&gt; <BR>&nbsp;&nbsp;这样会占用相当大的控件资源 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;Web控件是将集成式的拆解成单功能的： <BR>&nbsp;&nbsp;&lt;asp:button id=&#8221;btnOK&#8221; /&gt; <BR>&nbsp;&nbsp;这样就可以节省不必要的控件所占用的资源了 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;2.Web控件具有回送功能,能够用ViewState维持控件的状态. <BR>&nbsp;&nbsp; Html控件则不能,当点击页面的操作，其状态就会丢失. <BR>&nbsp;&nbsp; 可以做这样的一个实验: <BR>&nbsp;&nbsp; I. 分别建立两个文件: a.html b.aspx <BR>&nbsp;&nbsp; II.在a.html页面中加Html控件的RadioButton和一个button， <BR>&nbsp;&nbsp; 在b.aspx中加Web控件的RadioButton和一个button <BR>&nbsp;&nbsp; III.a.html直接双击浏览器运行,b.aspx通过IIS运行 <BR>&nbsp;&nbsp; IV.在a.html运行界面中，选中RadioButton,再单击Button按钮，会发现RadioButton会 <BR>&nbsp;&nbsp; 取消选中(丢失其状态),但在b.aspx页面执行同样的操作，RadioButton不会丢失，因为ViewState <BR>&nbsp;&nbsp; 给它保存了状态. 您可以在运行界面点击浏览器菜单&#8221;查看&#8221;-&gt;“源文件&#8221;,打开Html代码文件， <BR>&nbsp;&nbsp; 找到加密后的ViewState,类似于下面: <BR>&nbsp;&nbsp; &lt;input type=&#8221;hidden&#8221; name=&#8221;_VIEWSTATE&#8221; value=&#8221;dDw0ajfmafmjfzzmj4&#8243;/&gt; <BR>&nbsp;&nbsp; 其实ViewState实现原理也是将一些信息放到隐藏的一个控件中，并且asp.net生成的ViewState信息 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 是存储在客户端的 <BR>&nbsp;&nbsp; 这里要注意的一点是： <BR>&nbsp;&nbsp; 只有当格式为*.aspx文件，并且控件具有属性:&#8221;runat=server&#8221;时，回送功能才能打开 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;3. Html控件与Web控件最大的区别是它们对事件处理的方法不同。对于Html窗体控件， <BR>&nbsp;&nbsp;当引发一个事件时，浏览器会处理它。但对于Web控件，事件仅由浏览器生成，但浏览 <BR>&nbsp;&nbsp;器不会处理它，客户端要给服务器发个信息，告诉服务器处理事件。 不过有些事件， <BR>&nbsp;&nbsp;比如: <BR>&nbsp;&nbsp; 按下键/移动/鼠标等事件，Asp.net中没有这些事件 <BR>&nbsp;&nbsp; (因为这些事件即时性强，服务器处理得不够及时)，这时候Html控件就发挥其作用了，结合Html事件 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 协助完成. <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;如下是一些Html常用的事件: <BR>&nbsp;&nbsp;在浏览器上执行的Html控件事件: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;单击时触发: <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onclick=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;鼠标弹起时触发: <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onmouseup=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;//悬浮在控件上方时触发 <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onmouseover=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;//鼠标在控件上方移动时触发 <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onmousemove=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;//双击控件时触发 <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; ondblclick=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;//当焦点在控件时，按键时触发 <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onkeypress=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;//按键按下时触发 <BR>&nbsp;&nbsp;&lt;INPUT type=&#8221;button&#8221; value=&#8221;Click Me&#8221; onkeydown=&#8221;alert(&#8217;Hi,你好!&#8217;);&#8221;&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/794/feed</wfw:commentRss>
		</item>
		<item>
		<title>随机得到Access数据库记录</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/793</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/793#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:07:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/%e9%9a%8f%e6%9c%ba%e5%be%97%e5%88%b0access%e6%95%b0%e6%8d%ae%e5%ba%93%e8%ae%b0%e5%bd%95/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 由于Access数据库记录集缓存的原因，从代码里得到Access数据库随机记录是得不到，需要用随机SQL语句的办法来消除缓存。 &#160;&#160; &#160;&#160;下面就是例子： &#160;&#160; &#160;&#160;查看例子http://dotnet.aspx.cc/Exam/GetRandom.aspx &#160;&#160; &#160;&#160;&#60;%@ Page Language=&#8221;C#&#8221; Debug=&#8221;true&#8221; %&#62; &#160;&#160;&#60;%@ import Namespace=&#8221;System.Data&#8221; %&#62; &#160;&#160;&#60;%@ import Namespace=&#8221;System.Data.OleDb&#8221; %&#62; &#160;&#160;&#60;title&#62;随机得到Access数据库记录&#60;/title&#62; &#160;&#160;&#60;script runat=&#8221;server&#8221;&#62; &#160;&#160;void Page_Load(Object src,EventArgs e) &#160;&#160;{ &#160;&#160;if(!IsPostBack) &#160;&#160; { &#160;&#160; string MyConnString = &#8220;Provider=Microsoft.Jet.OleDB.4.0;Data Source=&#8221; &#160;&#160; + Server.MapPath(&#8221;aspxWeb.mdb.ascx&#8221;); &#160;&#160; Random R = new Random(); &#160;&#160; int intRandomNumber = R.Next(1,1000); &#160;&#160; &#160;&#160; string sql [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 由于Access数据库记录集缓存的原因，从代码里得到Access数据库随机记录是得不到，需要用随机SQL语句的办法来消除缓存。 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;下面就是例子： <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;查看例子http://dotnet.aspx.cc/Exam/GetRandom.aspx <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&lt;%@ Page Language=&#8221;C#&#8221; Debug=&#8221;true&#8221; %&gt; <BR>&nbsp;&nbsp;&lt;%@ import Namespace=&#8221;System.Data&#8221; %&gt; <BR>&nbsp;&nbsp;&lt;%@ import Namespace=&#8221;System.Data.OleDb&#8221; %&gt; <BR>&nbsp;&nbsp;&lt;title&gt;随机得到Access数据库记录&lt;/title&gt; <BR>&nbsp;&nbsp;&lt;script runat=&#8221;server&#8221;&gt; <BR>&nbsp;&nbsp;void Page_Load(Object src,EventArgs e) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;if(!IsPostBack) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; string MyConnString = &#8220;Provider=Microsoft.Jet.OleDB.4.0;Data Source=&#8221; <BR>&nbsp;&nbsp; + Server.MapPath(&#8221;aspxWeb.mdb.ascx&#8221;); <BR>&nbsp;&nbsp; Random R = new Random(); <BR>&nbsp;&nbsp; int intRandomNumber = R.Next(1,1000); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; string sql = &#8220;select top 10 id As 序号,Title As 标题 from Document Order By Rnd(&#8221; <BR>&nbsp;&nbsp; + (-1 * intRandomNumber).ToString() + &#8220;*id)&#8221;; <BR>&nbsp;&nbsp; OleDbConnection MyConnection = new OleDbConnection(MyConnString); <BR>&nbsp;&nbsp; MyConnection.Open(); <BR>&nbsp;&nbsp; OleDbCommand cmd = new OleDbCommand(sql,MyConnection); <BR>&nbsp;&nbsp; OleDbDataReader dr = cmd.ExecuteReader(); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; DataGrid1.DataSource = dr; <BR>&nbsp;&nbsp; DataGrid1.DataBind(); <BR>&nbsp;&nbsp; cmd.Dispose(); <BR>&nbsp;&nbsp; MyConnection.Close(); <BR>&nbsp;&nbsp; MyConnection.Dispose(); <BR>&nbsp;&nbsp; MyConnection = null; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&lt;/script&gt; <BR>&nbsp;&nbsp;&lt;form runat=server&gt; <BR>&nbsp;&nbsp;&lt;asp:DataGrid id=&#8221;DataGrid1&#8243; HorizontalAlign=&#8221;Center&#8221; <BR>&nbsp;&nbsp; Width=&#8221;600px&#8221; runat=&#8221;server&#8221; Font-Size=&#8221;9pt&#8221;&gt; <BR>&nbsp;&nbsp; &lt;AlternatingItemStyle BackColor=&#8221;#EEEEEE&#8221;&gt;&lt;/AlternatingItemStyle&gt; <BR>&nbsp;&nbsp; &lt;HeaderStyle BackColor=&#8221;#AAAADD&#8221; Font-Bold=&#8221;True&#8221; HorizontalAlign=&#8221;Center&#8221; /&gt; <BR>&nbsp;&nbsp;&lt;/asp:DataGrid&gt; <BR>&nbsp;&nbsp;&lt;/form&gt; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/793/feed</wfw:commentRss>
		</item>
		<item>
		<title>asp.net 2.0中的URL重写以及urlMappings问题(1)</title>
		<link>http://aspnet.blog.techweb.com.cn/archives/792</link>
		<comments>http://aspnet.blog.techweb.com.cn/archives/792#comments</comments>
		<pubDate>Tue, 03 Oct 2006 20:07:00 +0000</pubDate>
		<dc:creator>aspnet</dc:creator>
		
		<category><![CDATA[asp.net精选文摘]]></category>

		<guid isPermaLink="false">http://aspnet.blog.techweb.com.cn/2008/11/09/aspnet-20%e4%b8%ad%e7%9a%84url%e9%87%8d%e5%86%99%e4%bb%a5%e5%8f%8aurlmappings%e9%97%ae%e9%a2%981/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; 在asp.net2.0中的urlMappings倒是非常好用，可惜暂不支持正则表达式，不过，好在如果用IHttpModule的话 &#160;&#160; &#160;&#160;不管什么样的请求都会先经过IHttpModule这样就为URL重写提供了一个好机会： &#160;&#160; &#160;&#160;下面是我写的一个IHttpModule: &#160;&#160; &#160;&#160;using System; &#160;&#160;using System.Web; &#160;&#160; &#160;&#160;public class ReWriteModule:IHttpModule &#160;&#160;{ &#160;&#160; public ReWriteModule() &#160;&#160; { &#160;&#160; } &#160;&#160; public override string ToString() &#160;&#160; { &#160;&#160; return this.GetType().ToString(); &#160;&#160; } &#160;&#160; &#160;&#160; &#160;&#160;void IHttpModule.Dispose() &#160;&#160;{ &#160;&#160; &#160;&#160;} &#160;&#160; private static System.Xml.XmlDocument ruleDoc = null; &#160;&#160; private static System.Xml.XmlDocument GetRuleConfig(System.Web.HttpContext app) [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 在asp.net2.0中的urlMappings倒是非常好用，可惜暂不支持正则表达式，不过，好在如果用IHttpModule的话 <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;不管什么样的请求都会先经过IHttpModule这样就为URL重写提供了一个好机会： <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;下面是我写的一个IHttpModule: <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;using System; <BR>&nbsp;&nbsp;using System.Web; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;public class ReWriteModule:IHttpModule <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp; public ReWriteModule() <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; public override string ToString() <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; return this.GetType().ToString(); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;void IHttpModule.Dispose() <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; private static System.Xml.XmlDocument ruleDoc = null; <BR>&nbsp;&nbsp; private static System.Xml.XmlDocument GetRuleConfig(System.Web.HttpContext app) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; if (ruleDoc == null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; ruleDoc = new System.Xml.XmlDocument(); <BR>&nbsp;&nbsp; ruleDoc.Load(app.Server.MapPath(&#8221;~/rule.xml&#8221;)); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; return ruleDoc; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; public static string GetUrl(System.Web.HttpContext cxt,string path) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; System.Xml.XmlDocument doc = GetRuleConfig(cxt); <BR>&nbsp;&nbsp; System.Xml.XmlNodeList lst= doc.GetElementsByTagName(&#8221;RewriterRule&#8221;); <BR>&nbsp;&nbsp; string pat=&#8221;"; <BR>&nbsp;&nbsp; foreach (System.Xml.XmlNode nd in lst) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; System.Xml.XmlNodeList sub = nd.ChildNodes[0].ChildNodes; <BR>&nbsp;&nbsp; foreach(System.Xml.XmlNode chk in sub) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; pat = &#8220;^&#8221; + chk.InnerText+&#8221;$&#8221;; <BR>&nbsp;&nbsp; System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(pat,&nbsp;<a href="http://System.Text.RegularExpressions.RegexOptions.Com" title="http://System.Text.RegularExpressions.RegexOptions. " target="_blank">System.Text.RegularExpressions.RegexOpti&#8230;</a>piled | System.Text.RegularExpressions.RegexOptions.IgnoreCase); <BR>&nbsp;&nbsp; if(reg.IsMatch(path)) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; return reg.Replace(path, nd.ChildNodes[1].InnerText); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; return null; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp;void IHttpModule.Init(HttpApplication context) <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp; context.BeginRequest += delegate(object sender, EventArgs e) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; System.Web.HttpContext cxt = context.Context; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; if (cxt.Request.ContentType != &#8220;image/pjpeg&#8221;) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; string type = cxt.Request.ContentType.ToLower(); <BR>&nbsp;&nbsp; string path = cxt.Request.Path; <BR>&nbsp;&nbsp; string apppath = cxt.Request.ApplicationPath; <BR>&nbsp;&nbsp; path = path.Remove(0, apppath.Length); <BR>&nbsp;&nbsp; path = &#8220;~&#8221; + path; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; string newUrl = GetUrl(cxt, path.TrimEnd().TrimStart()); <BR>&nbsp;&nbsp; if (newUrl != null) <BR>&nbsp;&nbsp; { <BR>&nbsp;&nbsp; cxt.Response.Filter = new ResponseFilter(cxt.Response.Filter,cxt.Request.Path); <BR>&nbsp;&nbsp; cxt.Response.Write(&#8221;请求的路径:&#8221; + path); <BR>&nbsp;&nbsp; cxt.Response.Write(&#8221;&lt;BR&gt;&#8221;); <BR>&nbsp;&nbsp; cxt.Response.Write(&#8221;转向的目的URL：&#8221; + newUrl); <BR>&nbsp;&nbsp; cxt.Response.Write(&#8221;&lt;BR&gt;&#8221;); <BR>&nbsp;&nbsp; cxt.RewritePath(newUrl); <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; }//如果要求处理所有的请求时用到 <BR>&nbsp;&nbsp; //else <BR>&nbsp;&nbsp; //{ <BR>&nbsp;&nbsp; // cxt.Response.Write(cxt.Request.Path + &#8220;&lt;BR&gt;&#8221;); <BR>&nbsp;&nbsp; // cxt.Response.Write(&#8221;你请求的资源不存在或无权访问！&#8221;); <BR>&nbsp;&nbsp; // cxt.Response.Flush(); <BR>&nbsp;&nbsp; // cxt.Response.End(); <BR>&nbsp;&nbsp; //} <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; }; <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; &nbsp; <BR><A href="http://www.138blog.com/">摘</A><A href="http://www.133blog.com/">自</A> <A href="http://www.137blog.com/">：</A><A href="http://www.137blog.com/a/pc">电脑学习文摘</A> <A href="http://www.137c.com/">.</A></p>
]]></content:encoded>
			<wfw:commentRss>http://aspnet.blog.techweb.com.cn/archives/792/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
<!-- MKID:0: -->
<!-- MKB:1277 -->
