<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
       <title>金电下载站 - .Net专区</title>
       <link>http://www.jdxz.com/</link>
       <description>.Net专区</description>
       <language>zh-cn</language>
       <generator>Www.Jdxz.Net</generator>
       <copyright>Copyright 2001-2004 www.jdxz.net, All Rights Reserved</copyright>
       <pubDate>2011-5-4 6:11:38</pubDate>
       <item>
           <title>[.Net专区]Whidbey中客户端回调机制（一）</title>
           <link>http://www.jdxz.com//softinfo/4335.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>.Net专区</category>
           <pubDate>2009-11-29 3:40:37</pubDate>
           <comments></comments>
           <description>Whidbey对客户端回调的简化&lt;BR&gt;&lt;BR&gt;有很多理由让我期待vs.net的下一个版本：Whidbey，其中之一就是增加了很多对客户端脚本的支持。包含了新的属性和一个ClientScriptManager类来管理客户端脚本。然而，也许最受欢迎的就是Whidbey支持回调远程服务器正在使用的客户端脚本。&lt;BR&gt;图 1. 回调的流程: 当它被服务器和客户端两者处理时，你可以控制回调的流程&lt;BR&gt;通过刷新或回发提交一个页面来实现数据查询是一项很平常的技术。使用asp时，开发者使用脚本来控制客户端提交的数据，但这样通常使得asp代码很难进行维护。像大多数的Web applications，对服务器以提交回发形式提交数据引起一个完全的请求- 回应周期,服务器会生成一个完全新的页来回应请求， 然后浏览器会生成新的页以代替已存在的页。页面重绘（page-redrawing）使得使用者得到服务器的回应的数度变得很慢。开发者减轻这种问题的接口问题的一个方法是藉由使用远程脚本（remote scripting）,这种远程脚本使用包含Java applets 的DHTML组合在已存在的页面上动态生成向服务器更新数据的请求。&lt;BR&gt;&lt;BR&gt;除此之外，开发者还可以使用(只适用于IE请求)客户端脚本和XMLHttp向服务器后台数据发出请求。&lt;BR&gt;&lt;BR&gt;但是这两个方法的实现时很困难的，这需要非常的细心和努力，尤其是编译。&lt;BR&gt;&lt;BR&gt;开发者期待在最初ASP.NET release 版本中得到一些变化，他们得到一些，如： 服务器控件、 ViewState，自动回发（Automated postback）以及基于事件的ASP.NET编程模型解决了许多问题。尤其是SmartNavigation(仅仅在IE应用程序里)。 但是为了实现跨平台应用程序，开发者继续依赖远程脚本。这个问题，在ASP.NET v2.0( Whidbey) 里已经得到根本的改变。&lt;BR&gt;Whidbey 对客户回调的支持&lt;BR&gt;在Whidbey 版本中，客户端可以调用服务器方法来提交数据，并且得到结果，而不用提交表单。这些调用你只要写很少的一些特别的代码，使用后台的XML HTTP 来实现对服务器请求。 &lt;BR&gt;图一 显示应用程序逻辑流程。 &lt;BR&gt;&lt;BR&gt;你写了一个对服务器发出请求的客户端函数(步骤2)，并且定义了一个服务器事件(步骤1 c) 处理这个请求。 CallBackManager 就像是一个中转站，处理步骤3到步骤6的一系列过程。包括从客户端到服务器的请求的发出和数据从服务器到客户端的返回。 &lt;BR&gt;另一个客户端函数(步骤7) 处理服务器的返回信息。你写了两个客户端函数用来想服务器发出一个请求并且处理服务器的返回信息。&lt;BR&gt;实现查询&lt;BR&gt;假定你需要建立一个页面来实现从3 张数据库表中查询数据：Region, Country, and City &lt;BR&gt;这是一个&quot; dependent list &quot; 问题的典型的例子。 当一个用户选择一个地区，则程序应当用在这个地区的国家来绑定Country list。 同样，当用户选择一个国家时，City list应该为仅仅包含被选择的国家相应的城市 &lt;BR&gt;当然可以使用正常postback 技术来实现这写功能，但是你必须忍受每次向服务器发出请求而重绘整个页面的性能代价。然而，因为你能维护全部页布局代码，因此你可以提供一种更好、更快的方法来实现这个功能，这就是使用远程回调（remote callbacks），每次只发送相应的标识并且仅仅得到那些相应的数据。&lt;BR&gt;下载这篇文章代码，代码包括callback.sql数据库脚本，用于建立本文用那些数据。可以使用SQL Server或者MSDE 数据库。 首先运行数据库脚本，( 你可以根据需要更改，来使用其它数据库)。然后启动Visual Studio.NET Whidbey建立例子。&lt;BR&gt;创造工程，选择模板类型&quot; ASP.NET Web Site 。 这建立一个新页default.aspx 。如果想也可以给它重新命名。&lt;BR&gt;模板选择： 在Visual Studio 里的模板选择对话中选择ASP.NET网站项目&lt;BR&gt;在default.aspx页面增加 dropdown controls如图4中所示。&lt;BR&gt;你可以查看并且复制所有来自这篇文章下载代码用&amp;lt;asp:table&amp;gt;包括的代码。&lt;BR&gt;为了实现远程回调这个功能，必须实现ICallbackEventHandler 接口。 在页面增加以下的代码。&lt;BR&gt;&amp;lt;％@ implements interface=&lt;BR&gt;&quot;System.Web.UI.ICallbackEventHandler&quot; ％&amp;gt;&lt;BR&gt;This interface has a single public event definition that you must implement:&lt;BR&gt;public string RaiseCallbackEvent(&lt;BR&gt;string eventArgument) { &lt;BR&gt;// Server side handling here...&lt;BR&gt;} &lt;BR&gt;远程回调使客户端产生 RaiseCallbackEvent. 因此，你应该处理并且返回基于客户端发出的eventArgument相应的信息。 你可以从方法签名看见这种方法参数为一个string并且返回一个string。&lt;BR&gt;</description>
       </item>
       <item>
           <title>[.Net专区]Whidbey中客户端回调机制（一）</title>
           <link>http://www.jdxz.com//softinfo/4334.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>.Net专区</category>
           <pubDate>2009-11-29 3:40:37</pubDate>
           <comments></comments>
           <description>Whidbey对客户端回调的简化&lt;BR&gt;&lt;BR&gt;有很多理由让我期待vs.net的下一个版本：Whidbey，其中之一就是增加了很多对客户端脚本的支持。包含了新的属性和一个ClientScriptManager类来管理客户端脚本。然而，也许最受欢迎的就是Whidbey支持回调远程服务器正在使用的客户端脚本。&lt;BR&gt;图 1. 回调的流程: 当它被服务器和客户端两者处理时，你可以控制回调的流程&lt;BR&gt;通过刷新或回发提交一个页面来实现数据查询是一项很平常的技术。使用asp时，开发者使用脚本来控制客户端提交的数据，但这样通常使得asp代码很难进行维护。像大多数的Web applications，对服务器以提交回发形式提交数据引起一个完全的请求- 回应周期,服务器会生成一个完全新的页来回应请求， 然后浏览器会生成新的页以代替已存在的页。页面重绘（page-redrawing）使得使用者得到服务器的回应的数度变得很慢。开发者减轻这种问题的接口问题的一个方法是藉由使用远程脚本（remote scripting）,这种远程脚本使用包含Java applets 的DHTML组合在已存在的页面上动态生成向服务器更新数据的请求。&lt;BR&gt;&lt;BR&gt;除此之外，开发者还可以使用(只适用于IE请求)客户端脚本和XMLHttp向服务器后台数据发出请求。&lt;BR&gt;&lt;BR&gt;但是这两个方法的实现时很困难的，这需要非常的细心和努力，尤其是编译。&lt;BR&gt;&lt;BR&gt;开发者期待在最初ASP.NET release 版本中得到一些变化，他们得到一些，如： 服务器控件、 ViewState，自动回发（Automated postback）以及基于事件的ASP.NET编程模型解决了许多问题。尤其是SmartNavigation(仅仅在IE应用程序里)。 但是为了实现跨平台应用程序，开发者继续依赖远程脚本。这个问题，在ASP.NET v2.0( Whidbey) 里已经得到根本的改变。&lt;BR&gt;Whidbey 对客户回调的支持&lt;BR&gt;在Whidbey 版本中，客户端可以调用服务器方法来提交数据，并且得到结果，而不用提交表单。这些调用你只要写很少的一些特别的代码，使用后台的XML HTTP 来实现对服务器请求。 &lt;BR&gt;图一 显示应用程序逻辑流程。 &lt;BR&gt;&lt;BR&gt;你写了一个对服务器发出请求的客户端函数(步骤2)，并且定义了一个服务器事件(步骤1 c) 处理这个请求。 CallBackManager 就像是一个中转站，处理步骤3到步骤6的一系列过程。包括从客户端到服务器的请求的发出和数据从服务器到客户端的返回。 &lt;BR&gt;另一个客户端函数(步骤7) 处理服务器的返回信息。你写了两个客户端函数用来想服务器发出一个请求并且处理服务器的返回信息。&lt;BR&gt;实现查询&lt;BR&gt;假定你需要建立一个页面来实现从3 张数据库表中查询数据：Region, Country, and City &lt;BR&gt;这是一个&quot; dependent list &quot; 问题的典型的例子。 当一个用户选择一个地区，则程序应当用在这个地区的国家来绑定Country list。 同样，当用户选择一个国家时，City list应该为仅仅包含被选择的国家相应的城市 &lt;BR&gt;当然可以使用正常postback 技术来实现这写功能，但是你必须忍受每次向服务器发出请求而重绘整个页面的性能代价。然而，因为你能维护全部页布局代码，因此你可以提供一种更好、更快的方法来实现这个功能，这就是使用远程回调（remote callbacks），每次只发送相应的标识并且仅仅得到那些相应的数据。&lt;BR&gt;下载这篇文章代码，代码包括callback.sql数据库脚本，用于建立本文用那些数据。可以使用SQL Server或者MSDE 数据库。 首先运行数据库脚本，( 你可以根据需要更改，来使用其它数据库)。然后启动Visual Studio.NET Whidbey建立例子。&lt;BR&gt;创造工程，选择模板类型&quot; ASP.NET Web Site 。 这建立一个新页default.aspx 。如果想也可以给它重新命名。&lt;BR&gt;模板选择： 在Visual Studio 里的模板选择对话中选择ASP.NET网站项目&lt;BR&gt;在default.aspx页面增加 dropdown controls如图4中所示。&lt;BR&gt;你可以查看并且复制所有来自这篇文章下载代码用&amp;lt;asp:table&amp;gt;包括的代码。&lt;BR&gt;为了实现远程回调这个功能，必须实现ICallbackEventHandler 接口。 在页面增加以下的代码。&lt;BR&gt;&amp;lt;％@ implements interface=&lt;BR&gt;&quot;System.Web.UI.ICallbackEventHandler&quot; ％&amp;gt;&lt;BR&gt;This interface has a single public event definition that you must implement:&lt;BR&gt;public string RaiseCallbackEvent(&lt;BR&gt;string eventArgument) { &lt;BR&gt;// Server side handling here...&lt;BR&gt;} &lt;BR&gt;远程回调使客户端产生 RaiseCallbackEvent. 因此，你应该处理并且返回基于客户端发出的eventArgument相应的信息。 你可以从方法签名看见这种方法参数为一个string并且返回一个string。&lt;BR&gt;</description>
       </item>
       <item>
           <title>[.Net专区]十天学会ASP.NET</title>
           <link>http://www.jdxz.com//softinfo/2460.html</link>
           <author>金电下载网整理</author>
           <guid></guid>
           <category>.Net专区</category>
           <pubDate>2009-5-11 18:34:19</pubDate>
           <comments></comments>
           <description>&lt;P&gt;十天学会ASP.net之第一天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;我认为ASP.NET比ASP难很多，希望大家做好准备。难就难在实现同一个效果有很多方法，大家或许会疑惑。《十天学会系列教程》会清晰的写出各种方法，让大家能少一点坎坷。在ASP里面，大家几乎都是使用VB，数据库嘛，也无非是SQL和ACCESS。在ASP.NET里面，数据库还是这两个但是常用的语言多了一个C#，也是微软推荐的语言，为.NET平台定制的语言。这样ASP.NET就有四种组合：VB+ACCESS，VB+SQL，C#+ACCESS，C#+SQL，本教程会使用C#+ACCESS，兼顾四种来写，让大家对ASP.NET有一个全面的认识。虽然说学习ASP.NET不需要任何ASP基础，但是我觉得如果大家ASP不会，还是先看一下【十天学会ASP教程】，大家所需要了解的不是ASP的程序怎么写，而是怎么构建服务器，怎么使用HTML表单，同时对SQL语句有一个基础和理解，因为在本文里我不会将将一些基础的东西，废话不多说，开始我们第一天的学习。&lt;/P&gt;
&lt;P&gt;学习目的：调试出安装环境&lt;/P&gt;
&lt;P&gt;我要申明一点，操作系统就用2000，如果说要学习一个网络语言还不肯多装一个操作系统的话，那我看也不要学习了。&lt;BR&gt;先到网上下载一个MDAC(要是2.7以上的版本才行)，然后安装，安装以后或许会重新启动一次。&lt;BR&gt;然后再下载一个.NET FRAMEWORK SDK，安装以后会在控制面板里面的管理工具里面多两个东西，这个不用理睬他，我们要使用的还是原来的INTERNET服务管理器。打开它按照ASP教程里面的调试方法建立一个目录，建立一个EXAMPLE1.ASPX，然后用记事本打开这个文件在里面输入&lt;/P&gt;
&lt;P&gt;&amp;lt;script language=&quot;C#&quot; runat=&quot;server&quot;&amp;gt;&lt;BR&gt;void Page_Load()&lt;BR&gt;{&lt;BR&gt;Response.Write(&quot;Hello World!&quot;);&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;--------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;script language=&quot;VB&quot; runat=&quot;server&quot;&amp;gt;&lt;BR&gt;sub page_load()&lt;BR&gt;response.write(&quot;Hello World!&quot;)&lt;BR&gt;end sub&lt;BR&gt;&amp;lt;/script&amp;gt; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;然后用本地访问，查看结果：&lt;/P&gt;
&lt;P&gt;浏览器显示: Hello World!&lt;/P&gt;
&lt;P&gt;在这里我要说明两点：&lt;BR&gt;1、我的示例文件总是有A和B分别是用C#和VB写的，演示的图片就用C#那一种的，都一样嘛，教程里面代码也是写两种用&amp;lt;hr&amp;gt;分割开，大家可以比较一下。&lt;BR&gt;2、我写教程的时候用的都是记事本来编写APS.NET大家也可以安装VS.NET来编写不过起步还是用记事本比较好，因为可以看的更加透彻一点。&lt;/P&gt;
&lt;P&gt;今天就说到这里，明天说一下C#的基本语法。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第二天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;学习目的：掌握C#的基本知识 &lt;/P&gt;
&lt;P&gt;一、定义变量： &lt;BR&gt;string strExample; 字符串(&quot;aaa&quot;) &lt;BR&gt;char chrExample; 字符(’a’) &lt;BR&gt;bool blnExample; Bool型(true/false) &lt;BR&gt;DataTime datExample; 日期型(&quot;09/19/2002&quot;) &lt;BR&gt;int intExample; 整数(32位有符号整数) &lt;BR&gt;double dblExample; 浮点数(64位双精度浮点数) &lt;BR&gt;二、各种运算： &lt;BR&gt;= 赋值运算 &lt;BR&gt;+ 加法运算 &lt;BR&gt;- 减法运算 &lt;BR&gt;* 乘法运算 &lt;BR&gt;/ 除法运算 &lt;BR&gt;% 取模运算 &lt;BR&gt;&amp;amp;&amp;amp; 逻辑And &lt;BR&gt;|| 逻辑Or &lt;BR&gt;! 逻辑Not &lt;BR&gt;三、各种结构： &lt;BR&gt;if(条件) &lt;BR&gt;{ &lt;BR&gt;} &lt;BR&gt;else &lt;BR&gt;{ &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;switch(条件) &lt;BR&gt;{ &lt;BR&gt;case option1: &lt;BR&gt;break; &lt;BR&gt;case option2: &lt;BR&gt;break; &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;for(int i=1;i&amp;lt;=10;i++)//特别注意这里面是分号 &lt;BR&gt;{ &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;while(条件) &lt;BR&gt;{ &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;do &lt;BR&gt;{ &lt;BR&gt;}while(条件); &lt;BR&gt;四、注意事项： &lt;BR&gt;1、用习惯VB的人很容易漏了语句末尾的分号； &lt;BR&gt;2、用习惯VB的人很随便使用变量但是不申明，这在C#默认情况下是不允许的； &lt;BR&gt;3、在向函数传递参数的时候要用圆括号：Response.Write &quot;aa&quot;;是不允许的。 &lt;/P&gt;
&lt;P&gt;我说的这点几乎称不上是在说一种语言，一种语言的学习不仅仅需要学习语法，还需要学习语言特色，希望大家有空还是买一本C#的书来好好研究一下C#作为一种新的语言的特性吧。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第三天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：掌握WEB控件的使用(一) &lt;/P&gt;
&lt;P&gt;或许你会问，为什么需要WEB控件？WEB控间就好像VB里面的控间，可以在程序的任何地方引用，修改所有属性，有了它的配合才能完成代码分离。想一下，如果还是以前的HTML控间，我们当我们需要在某一个地方显示一段数据库的内容是不是只有用&amp;lt;%= %&amp;gt;这样势必在HTML包含了程序的代码块，就达不到分离代码和界面的目的了。 &lt;BR&gt;或许你还会问，为什么要代码分离那？原因很简单，不是每一个程序员都是合格的网页设计师，如果我们需要修改代码的时候会破坏网页设计师原来的设定，是不是不方便那，程序代码和HTML代码混合在一起对于程序员来说也不方便修改代码。当然，我们的网页设计师也需要学习一点WEB控间的知识。 &lt;BR&gt;下面来一个一个介绍： &lt;BR&gt;一、Label控件： &lt;BR&gt;主要属性： &lt;BR&gt;Text 标签所显示的文本 &lt;BR&gt;范例：&amp;lt;asp:Label id=&quot;lblMessage&quot; Text=&quot;aaa&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;需要注意的是我们不能遗漏runat=&quot;server&quot;字样，还有所有的WEB控件都要包含在&amp;lt;form runat=&quot;server&quot;&amp;gt;&amp;lt;/form&amp;gt;中间 &lt;BR&gt;下面看一个完整的例子，在程序里面修改Label的Text属性，以此改变网页的显示。 &lt;/P&gt;
&lt;P&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;C#&quot;&amp;gt; &lt;BR&gt;void Page_Load() &lt;BR&gt;{ &lt;BR&gt;lblMessage.Text=&quot;Hello World!&quot;; &lt;BR&gt;} &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Label.aspx&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;form runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;asp:Label id=&quot;lblMessage&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;&amp;lt;/form&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;VB&quot;&amp;gt; &lt;BR&gt;sub Page_Load &lt;BR&gt;lblMessage.Text=&quot;Hello World!&quot; &lt;BR&gt;end sub &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Label.aspx&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;form runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;asp:Label id=&quot;lblMessage&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;&amp;lt;/form&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;二、TextBox控件： &lt;BR&gt;主要属性： &lt;BR&gt;Text 控件显示的文本； &lt;BR&gt;MaxLength 文本框可以添加的最多的字符数（多行文本框无效）； &lt;BR&gt;ReadOnly 只读； &lt;BR&gt;TextMode 有下面几个有效值 MultiLine,Password,SingleLine； &lt;BR&gt;Rows 指定文本框的垂直尺寸 &lt;/P&gt;
&lt;P&gt;三、Button控件： &lt;BR&gt;有三种：Button 标准的表单按钮；ImageButton 显示图像的表单按钮；LinkButton 显示作为超链接样子Button &lt;BR&gt;Button基本上就是Text属性来设置按钮上面的文字； &lt;BR&gt;ImageButton基本上就是ImageUrl来设置按钮上图象的地址；AlternativeText 在浏览器不支持图片的时候显示的文字； &lt;BR&gt;LinkButton基本上就是Text属性来设置按钮上的文字； &lt;BR&gt;他们三者共同的属性就是CausesValidation=true/false来设置按钮提交的表单是不是被检验（后面将说到检验控件） &lt;BR&gt;他们三者共同的方法就是OnClick就是点击按钮的时候触发的函数，下面举一个例子： &lt;/P&gt;
&lt;P&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;C#&quot;&amp;gt; &lt;BR&gt;void btnCounter_OnClick(object sender,EventArgs e) &lt;BR&gt;{ &lt;BR&gt;btnCounter.Text=&quot;Clicked&quot;; &lt;BR&gt;} &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Label.aspx&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;form runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;asp:Button Text=&quot;UnClicked&quot; OnClick=&quot;btnCounter_OnClick&quot; id=&quot;btnCounter&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;&amp;lt;/form&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;VB&quot;&amp;gt; &lt;BR&gt;sub btn_COunter_OnClick(s as object,e as eventargs) &lt;BR&gt;btnCounter.Text=&quot;Clicked&quot; &lt;BR&gt;end sub &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Label.aspx&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;form runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;asp:Button Text=&quot;UnClicked&quot; OnClick=&quot;btnCounter_OnClick&quot; id=&quot;btnCounter&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;&amp;lt;/form&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;今天就说这三个控件，明天继续。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第四天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：掌握WEB控件的使用(二) &lt;/P&gt;
&lt;P&gt;首先我要说明，我这十天教程也只是一个让大家对ASP.NET有一个认识而已，我也跳过了很多东西。网上有很多人在责骂我写的教程，认为十天什么都学不会，看了我的教程还是什么都不会，我想他们或许是过高估计了我的教程。外面有很多书，关于ASP和ASP.NET的，我就是看外面的书学会的。我所要做的就是希望大家能看了我的教程以后觉得ASP和ASP.NET不是学不会的东西然后有信心去学会它。我想学习还是靠自己的，外面每一本书也有自己写的不周到的地方，关键还需要自己的实践加上探索。 &lt;/P&gt;
&lt;P&gt;首先来说一下表单的验证控件，以前我们做表单验证，如果是客户端的JavaSCRIPT，不能做到美观统一，而且还可以通过直接在浏览器起教表单来屏蔽；如果我们做服务器端验证，又会发现让检验结果在前台反映也是很麻烦的事情。现在好了，ASP.NET提供的很多检验控件让我们不需要考虑是客户端检验还是服务器端检验，让我们不需要考虑是怎么输出检验结果。 &lt;/P&gt;
&lt;P&gt;看一下检验表单控件是不是填写了的检验控件先： &lt;BR&gt;&amp;lt;asp:textbox id=&quot;username&quot; runat=&quot;server&quot; cssclass=&quot;textbox&quot;/&amp;gt; &lt;BR&gt;&amp;lt;asp:requiredfieldvalidator controltovalidate=&quot;username&quot; display=&quot;dynamic&quot; forecolor=&quot;#ff0000&quot; font-name=&quot;宋体&quot; font-size=&quot;9pt&quot; text=&quot;请填写&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;controltovalidate就是你想检验的控件的ID；默认情况下不显示错误消息，地方也会被保留，如果使用了display=&quot;dynamic&quot; 那么不显示错误消息的地方不会被空出； forecolor=&quot;#ff0000&quot; font-name=&quot;宋体&quot; font-size=&quot;9pt&quot; 就是设定错误消息字体的颜色，字体，大小的；text=&quot;请填写&quot; 就是当没有填写内容时候显示的错误消息；别忘记最后的runat=&quot;server&quot;。现在这个检验控件是放在了textbox的后面，那么错误消息也在textbox后面显示，也可以放在其他地方。 &lt;/P&gt;
&lt;P&gt;再看一下比较表单控件的数据与另外一个数据的检验控件： &lt;BR&gt;&amp;lt;asp:textbox id=&quot;password1&quot; runat=&quot;server&quot; textmode=&quot;password&quot; cssclass=&quot;textbox&quot;/&amp;gt; &lt;BR&gt;&amp;lt;asp:requiredfieldvalidator controltovalidate=&quot;password1&quot; display=&quot;dynamic&quot; forecolor=&quot;#ff0000&quot; font-name=&quot;宋体&quot; font-size=&quot;9pt&quot; text=&quot;请填写&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;这里是第一个需要用户填写的密码框 &lt;BR&gt;我们经常会再设立一个密码框让用户再填写一次： &lt;BR&gt;&amp;lt;asp:textbox id=&quot;password2&quot; runat=&quot;server&quot; textmode=&quot;password&quot; cssclass=&quot;textbox&quot;/&amp;gt; &lt;BR&gt;&amp;lt;asp:requiredfieldvalidator controltovalidate=&quot;password2&quot; display=&quot;dynamic&quot; forecolor=&quot;#ff0000&quot; font-name=&quot;宋体&quot; font-size=&quot;9pt&quot; text=&quot;请填写&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;&amp;lt;asp:comparevalidator controltovalidate=&quot;password2&quot; controltocompare=&quot;password1&quot; display=&quot;dynamic&quot; operator=&quot;equal&quot; forecolor=&quot;#ff0000&quot; font-name=&quot;宋体&quot; font-size=&quot;9pt&quot; text=&quot;确认失败&quot; runat=&quot;server&quot;/&amp;gt; &lt;BR&gt;controltocompare=&quot;password1&quot; 就是需要比较的控件；operator=&quot;equal&quot; 就是设定比较操作是：是否相等（还有NotEqual：不相等,LessThan：少于,GreaterThan：大于，当不符合这个比较操作的时候显示错误消息）。 &lt;/P&gt;
&lt;P&gt;以前说到BUTTON控件CausesValidation=true/false来设置按钮提交的表单是不是被检验也就是这里的几个检验控件，如果CausesValidation=true的话按下按钮就会首先检测是不是都通过了检验控件的检验。 &lt;/P&gt;
&lt;P&gt;下面再说两点： &lt;BR&gt;一、每一个可以显示的控件都有是不是显示的属性，比如username.Visible=false;就是隐藏了前面的username控件；还有就是如果要对控件应用CSS的话就这么写：cssclass=&quot;&quot;，而不是以前HTML中的class=&quot;&quot;。 &lt;BR&gt;二、所有WEB控件都要包含在&amp;lt;form runat=&quot;server&quot;&amp;gt;&amp;lt;/form&amp;gt;中，否则就会出错。 &lt;/P&gt;
&lt;P&gt;今天就到此结束，请继续往后面看，下次开始就要说ADO.NET了。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第五天&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;学习目的：学会连接两种数据库 &lt;/P&gt;
&lt;P&gt;对于ASP来说，我们常用的数据库无非是ACCESS和SQL Server，对于ASP.NET也是，不过ASP.NET对于SQL Server有专门的连接组件而不推荐用OLE DB。 &lt;/P&gt;
&lt;P&gt;首先看一下ACCESS的连接数据库并打开； &lt;/P&gt;
&lt;P&gt;string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;; &lt;BR&gt;strConnection+=Server.MapPath(&quot;*.mdb&quot;); //*就是数据库的名字 &lt;BR&gt;OleDbConnection objConnection=new OleDbConnection(strConnection); &lt;BR&gt;objConnection.Open(); &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;dim objConnection as OleDbConnection &lt;BR&gt;objConnection=new OleDbConnection(&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;+Server.MapPath(&quot;*.mdb&quot;)) &lt;BR&gt;objConnection.Open() &lt;/P&gt;
&lt;P&gt;下面再看一下SQL Server的连接数据库并打开； &lt;/P&gt;
&lt;P&gt;string strConnection=&quot;server=数据库连接;uid=用户名;pwd=密码;database=数据库名字&quot;; &lt;BR&gt;SqlConnediob objConnection=new SqlCOnnection(strConnection); &lt;BR&gt;objConnection.Open(); &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;dim objConnection as SqlConnectiom &lt;BR&gt;objConnection=new SqlConnection(&quot;server=数据库连接;uid=用户名;pwd=密码;database=数据库名字&quot;) &lt;BR&gt;objConnection.Open() &lt;/P&gt;
&lt;P&gt;实际上，在大多数地方SQL Server和ACCESS的区别除了连接语句，其他定义语句也就是SQL鬃和OLEDB鬃的区别 &lt;/P&gt;
&lt;P&gt;另外，如果是ACCESS数据库的话在ASPX文件的开头需要包括下列语句： &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data&quot;%&amp;gt; &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data.OleDb&quot;%&amp;gt; &lt;BR&gt;如果是SQL Server则需要包括以下语句： &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data&quot;%&amp;gt; &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data.SqlClient&quot;%&amp;gt; &lt;/P&gt;
&lt;P&gt;今天就说到这里，明天开始讲数据库的读取。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第六天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：学会读取数据库 &lt;/P&gt;
&lt;P&gt;有的网友说，不会C#，在ASP.NET里面还是选择VB.NET，这个我不反对，但是我觉得既然是学习新的东西，就不要在意有多少是新的。实际上C#就一般的操作来说，只是区分大小写和多了一个分号这两点与VB.NET不同其他都差不多啊。在ASP里面我们读取数据就直接用RECORDSET，然后在HTML代码里面穿插&amp;lt;%= %&amp;gt;就可以显示了，但是ASP.NET讲究的是代码分离，如果还是这样显示数据就不能代码分离了。所以我们有两种方法：如果是读取一条记录的数据或者不多的数据，我们用DATAREADER采集数据，然后赋值给LABEL控件的Text属性即可；如果是读取大量数据我们就采用DATAGRID。 &lt;/P&gt;
&lt;P&gt;今天我们就来说一下DATAREADER： &lt;/P&gt;
&lt;P&gt;string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;; &lt;BR&gt;strConnection+=Server.MapPath(strDb); &lt;BR&gt;OleDbConnection objConnection=new OleDbConnection(strConnection); &lt;BR&gt;OleDbCommand objCommand = new OleDbCommand(&quot;这里是SQL语句&quot; , objConnection); &lt;BR&gt;objConnection.Open(); &lt;BR&gt;OleDbDataReader objDataReader=objCommand.ExecuteReader(); &lt;BR&gt;if(objDataReader.Read()) &lt;BR&gt;{ &lt;BR&gt;oicq.Text=Convert.ToString(objDataReader[&quot;useroicq&quot;]); &lt;BR&gt;homesite.Text=Convert.ToString(objDataReader[&quot;usersite&quot;]); &lt;BR&gt;face.SelectedItem.Text=Convert.ToString(objDataReader[&quot;userface&quot;]); &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;大家可以看到我们首先是连接数据库然后打开，对于select的命令，我们申明一个OleDbCommand来执行之，然后再申明一个OleDbDataReader，来读取数据，用的是ExecuteReader()，objDataReader.Read()就开始读取了，在输出的时候我们要注意Text属性接受的只能是字符串，所以我们要把读出的数据都转化为字符串才行。 &lt;BR&gt;转换变量类型函数： &lt;BR&gt;转换为字符串：Convert.ToString() &lt;BR&gt;转换为数字：Convert.ToInt64()，Convert.ToInt32()，Convert.ToInt16() 是按照数字位数由长到短 &lt;BR&gt;转换为日期：Convert.ToDateTime() &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;dim objConnection as OleDbConnection &lt;BR&gt;dim objCommand as OleDbCommand &lt;BR&gt;dim objDataReader as OleDbDataReader &lt;BR&gt;objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;+Server.MapPath(strDb)) &lt;BR&gt;objCommand=new OleDbCommand(&quot;这里是SQL语句&quot; , objConnection) &lt;BR&gt;objConnection.Open() &lt;BR&gt;objDataReader=objCommand.ExecuteReader() &lt;BR&gt;if objDataReader.Read() &lt;BR&gt;oicq.Text=Convert.ToString(objDataReader[&quot;useroicq&quot;]) &lt;BR&gt;homesite.Text=Convert.ToString(objDataReader[&quot;usersite&quot;]) &lt;BR&gt;face.SelectedItem.Text=Convert.ToString(objDataReader[&quot;userface&quot;]) &lt;BR&gt;end if &lt;/P&gt;
&lt;P&gt;其实大家比较一下C#和VB的语法，会发觉用C#似乎更加简单，教程里面我侧重C#，对于VB的代码我就不解释了。 &lt;/P&gt;
&lt;P&gt;下面说一下如果代码是读取SQL数据库，我们这样来转变 &lt;BR&gt;1、把代码开始的 &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data&quot;%&amp;gt; &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data.OleDb&quot;%&amp;gt; &lt;BR&gt;修改为 &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data&quot;%&amp;gt; &lt;BR&gt;&amp;lt;%@Import Namespace=&quot;System.Data.SqlClient&quot;%&amp;gt; &lt;BR&gt;2、把代码里面所有申明的对象OleDb鬃变为Sql鬃就这么简单 &lt;BR&gt;你甚至可以用替换所有来解决，所以今后我讲不再列出SQL Server的代码了。 &lt;/P&gt;
&lt;P&gt;今天就说到这里，明天开始说数据的添加、删除、修改。&lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第七天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：学会添加删除修改记录 &lt;/P&gt;
&lt;P&gt;以前我们在ASP中不管是添加还是删除记录或者用SQL语句加上EXECUTE()或者就是直接用RECORDSET的NEW、DELETE、UPDATE等方法来添加删除修改记录。在ASP.NET里面我们采用SQL语句加上COMMAND对象来执行SQL语句的方法来添加删除修改记录。这比上次说的读取记录还简单。实际上只有一点区别，把ExecuteReader()修改为ExecuteNonQuery()即可，因为我们不需要返回值啊。 &lt;BR&gt;string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;; &lt;BR&gt;strConnection+=Server.MapPath(strDb); &lt;BR&gt;OleDbConnection objConnection=new OleDbConnection(strConnection); &lt;BR&gt;OleDbCommand objCommand = new OleDbCommand(&quot;这里是SQL语句&quot; , objConnection); &lt;BR&gt;objConnection.Open(); &lt;BR&gt;OleDbDataReader objDataReader=objCommand.ExecuteNonQuery(); &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;dim objConnection as OleDbConnection &lt;BR&gt;dim objCommand as OleDbCommand &lt;BR&gt;objConnection=new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;+Server.MapPath(strDb)) &lt;BR&gt;objCommand=new OleDbCommand(&quot;这里是SQL语句&quot; , objConnection) &lt;BR&gt;objConnection.Open() &lt;BR&gt;objDataReader=objCommand.ExecuteNoQuery() &lt;/P&gt;
&lt;P&gt;下面再举例子说明一下SQL语句（ACCESS）： &lt;BR&gt;添加记录： insert int &lt;/P&gt;
&lt;P&gt;o 表名 (字段1，字段2) values (字符串1，字符串2) where 条件 &lt;BR&gt;删除记录： delete from 表名 where 条件 &lt;BR&gt;修改记录： update 表名 set 字段1=鬃，字段2=鬃 where 条件 &lt;/P&gt;
&lt;P&gt;需要特别注意，如果是SQL Server删除记录是delete 表名，不需要再加from了。 &lt;/P&gt;
&lt;P&gt;今天就说到这里了，明天说ASP.NET里面最著名的DATAGRID。 &lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第八天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：初步掌握DATAGRID的使用 &lt;/P&gt;
&lt;P&gt;以前在ASP中，我们显示大批量数据经常使用循环读取记录集的方式，在表格中插入代码来显示，循环的是&amp;lt;tr&amp;gt;，如果是分页还需要自己制作，如果排序更加复杂，在ASP.NET中就好了，一切工作都可以让DATAGRID来做。 &lt;/P&gt;
&lt;P&gt;首先看一下DATAGRID的样式方面的属性 &lt;BR&gt;BackImageUrl=&quot;&quot; 背景图片 &lt;BR&gt;CellSpacing=&quot;&quot; 单元格间距 &lt;BR&gt;CellPadding=&quot;&quot; 单元格填充 &lt;BR&gt;cssClass=&quot;&quot; 使用的CSS样式 &lt;/P&gt;
&lt;P&gt;DATAGRID可以自动用表中的字段名放在显示的记录的头部来表示各个单元格所代表的意义，用ShowHeader=&quot;true/false&quot;来控制是不是显示，在大多数情况下我们是不需要这个功能的，因为我们数据库中的字段名大多是英文的，而我们想在页面输出的大多是中文名字。 &lt;/P&gt;
&lt;P&gt;下面看一下显示数据库内所有记录，就几行代码： &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;C#&quot;&amp;gt; &lt;BR&gt;void Page_Load() &lt;BR&gt;{ &lt;BR&gt;string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;; &lt;BR&gt;strConnection+=Server.MapPath(&quot;guestbook.mdb&quot;); &lt;BR&gt;OleDbConnection objConnection=new OleDbConnection(strConnection); &lt;BR&gt;OleDbCommand objCommand1 = new OleDbCommand(&quot;select * from guestbook&quot;,objConnection); &lt;BR&gt;objConnection.Open(); &lt;BR&gt;dgrdMain.DataSource=objCommand1.ExecuteReader();//dgrdMain就是下面的DATAGRID的ID &lt;BR&gt;dgrdMain.DataBind(); &lt;BR&gt;objConnection.Close(); &lt;BR&gt;} &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;asp:DataGrid &lt;BR&gt;id=&quot;dgrdMain&quot; &lt;BR&gt;cellpadding=&quot;1&quot; &lt;BR&gt;showheader=&quot;true&quot; &lt;BR&gt;borderwidth=&quot;0&quot; &lt;BR&gt;runat=&quot;server&quot; &lt;BR&gt;/&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;至于VB的版本，这次大家自己来试试吧：） &lt;/P&gt;
&lt;P&gt;假设数据库是三个字段：id,aa,bb &lt;BR&gt;显示的样子就如下： &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;id aa bb &lt;BR&gt;1 werwe rewrwe &lt;BR&gt;2 werwe rewrwe &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;我们一定觉得这种显示不满意，我们有两种显示的方式（需要包括在&amp;lt;columns&amp;gt;&amp;lt;/columns&amp;gt;中间）： &lt;/P&gt;
&lt;P&gt;一、默认的列，我们可以选择不输出所有的字段还可以安排顺序： &lt;BR&gt;&amp;lt;asp:BoundColumn DataField=&quot;想要显示的字段名&quot;&amp;gt; &lt;BR&gt;比如说我们想按照bb,aa来输出这个表，我们这么写 &lt;/P&gt;
&lt;P&gt;&amp;lt;asp:DataGrid &lt;BR&gt;id=&quot;dgrdMain&quot; &lt;BR&gt;cellpadding=&quot;1&quot; &lt;BR&gt;showheader=&quot;true&quot; &lt;BR&gt;autogeneratecolumns=&quot;false&quot; &lt;BR&gt;borderwidth=&quot;0&quot; &lt;BR&gt;runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;columns&amp;gt; &lt;BR&gt;&amp;lt;asp:boundcolumn datafield=&quot;bb&quot;/&amp;gt; &lt;BR&gt;&amp;lt;asp:boundcolumn datafield=&quot;bb&quot;/&amp;gt; &lt;BR&gt;&amp;lt;/columns&amp;gt; &lt;BR&gt;&amp;lt;/asp:datagrid&amp;gt; &lt;/P&gt;
&lt;P&gt;注意使用了autogeneratecolumns=&quot;false&quot;以后DATAGRID就不会自动输出所有字段了。 &lt;/P&gt;
&lt;P&gt;二、以模板列，我们可以定制每一个单元格的样式： &lt;BR&gt;&amp;lt;asp:TemplateColumn&amp;gt; &lt;BR&gt;&amp;lt;itemTemplate&amp;gt; &lt;BR&gt;中间是一个表格，想怎么样就怎么样 &lt;BR&gt;&amp;lt;/itemTemplate&amp;gt; &lt;BR&gt;&amp;lt;/asp:DataGrid&amp;gt; &lt;BR&gt;或许你们要说怎么在表格中输出代码那，可以使用&amp;lt;%# DataBinder.Eval(Container.DataItem,&quot;字段名&quot;).ToString()%&amp;gt; &lt;BR&gt;下面看一个例子，我们所要做的就是把aa,bb两个字段放在一个单元格内显示，就好像下面一样： &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;1 werwe &lt;BR&gt;rewrwe &lt;BR&gt;2 werwe &lt;BR&gt;rewrwe &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;我们这样写代码： &lt;BR&gt;&amp;lt;asp:DataGrid &lt;BR&gt;id=&quot;dgrdMain&quot; &lt;BR&gt;cellpadding=&quot;1&quot; &lt;BR&gt;showheader=&quot;false&quot; &lt;BR&gt;autogeneratecolumns=&quot;false&quot; &lt;BR&gt;borderwidth=&quot;0&quot; &lt;BR&gt;runat=&quot;server&quot;&amp;gt; &lt;BR&gt;&amp;lt;columns&amp;gt; &lt;BR&gt;&amp;lt;asp:boundcolumn datafield=&quot;ii&quot;/&amp;gt; 首先使用默认的显示方式显示ID &lt;BR&gt;&amp;lt;asp:TemplateColumn&amp;gt; 再使用模板来显示后面一列（由AA,BB并列组成） &lt;BR&gt;&amp;lt;itemTemplate&amp;gt; &lt;BR&gt;&amp;lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;&amp;gt; &lt;BR&gt;&amp;lt;tr&amp;gt; &lt;BR&gt;&amp;lt;td&amp;gt;&amp;lt;%# Container.DataItem(&quot;aa&quot;)%&amp;gt;&amp;lt;/td&amp;gt; &lt;BR&gt;&amp;lt;/tr&amp;gt; &lt;BR&gt;&amp;lt;tr&amp;gt; &lt;BR&gt;&amp;lt;td&amp;gt;&amp;lt;%# Container.DataItem(&quot;bb&quot;)%&amp;gt;&amp;lt;/td&amp;gt; &lt;BR&gt;&amp;lt;/tr&amp;gt; &lt;BR&gt;&amp;lt;/table&amp;gt; &lt;BR&gt;&amp;lt;/itemTemplate&amp;gt; &lt;BR&gt;&amp;lt;/asp:DataGrid&amp;gt; &lt;BR&gt;&amp;lt;/columns&amp;gt; &lt;BR&gt;&amp;lt;/asp:datagrid&amp;gt; &lt;/P&gt;
&lt;P&gt;今天就说到这里，明天我们来看一下DATAGRID的分页显示等功能 &lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第九天&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;学习目的：学会用DATAGRID分页显示 &lt;/P&gt;
&lt;P&gt;虽然说DATAGRID的分页显示效率不怎么高，但是不管怎么说，它是最方便的分页显示，对于做一个留言簿还是相当简单实用的。对于启用分页功能还有一个重要要求，只能在DATADRID控件的数据源实现了ICOLLECTION接口的情况下才能启用分页功能，而DATAREADER没有这个接口，所以必须使用DATATABLE来代替。 &lt;BR&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;C#&quot;&amp;gt; &lt;BR&gt;void Page_Load() &lt;BR&gt;{ &lt;BR&gt;string strConnection=&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;; &lt;BR&gt;strConnection+=Server.MapPath(&quot;guestbook.mdb&quot;); &lt;BR&gt;OleDbConnection objConnection=new OleDbConnection(strConnection); &lt;BR&gt;OleDbDataAdapter objDataAdapter=new OleDbDataAdapter(&quot;select * from guestbook&quot;,objConnection); &lt;BR&gt;DataSet objDataSet=new DataSet(); &lt;BR&gt;objDataAdapter.Fill(objDataSet); &lt;BR&gt;dgrdMain.DataSource=objDataSet; &lt;BR&gt;dgrdMain.DataBind(); &lt;BR&gt;} &lt;BR&gt;void dgrdMain_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e) &lt;BR&gt;{ &lt;BR&gt;dgrdMain.CurrentPageIndex = e.NewPageIndex; &lt;BR&gt;DataBind(); &lt;BR&gt;} &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;asp:DataGrid &lt;BR&gt;id=&quot;dgrdMain&quot; &lt;BR&gt;cellpadding=&quot;1&quot; &lt;BR&gt;showheader=&quot;true&quot; &lt;BR&gt;borderwidth=&quot;0&quot; &lt;BR&gt;allowpaging=&quot;true&quot; 启用分页功能 &lt;BR&gt;pagesize=&quot;3&quot; 每一页显示三条记录 &lt;BR&gt;onpageindexchanged=&quot;dgrdMain_pageindexchanged &quot; 调用第滓车暮猟grdMain_PageIndexChanged() &lt;BR&gt;runat=&quot;server&quot; &lt;BR&gt;/&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;&amp;lt;script runat=&quot;server&quot; language=&quot;VB&quot;&amp;gt; &lt;BR&gt;subPage_Load &lt;BR&gt;dim objConnection as OleDbConnection &lt;BR&gt;dim objDataAdapter as OleDbDataAdapter &lt;BR&gt;dim objDataSet as DataSet &lt;BR&gt;objConnection=new OleDbConnection(&quot;Provider=Microsoft.Jet.OleDb.4.0;Data Source=&quot;+Server.MapPath(&quot;guestbook.mdb&quot;)) &lt;BR&gt;objDataAdapter=new OleDbDataAdapter(&quot;select * from guestbook&quot;,objConnection) &lt;BR&gt;objDataSet=new DataSet &lt;BR&gt;objDataAdapter.Fill(objDataSet) &lt;BR&gt;dgrdMain.DataSource=objDataSet &lt;BR&gt;dgrdMain.DataBind() &lt;BR&gt;end sub &lt;BR&gt;sub dgrdMain_PageIndexChanged(sender as object,e as datagridpagechangedeventargs) &lt;BR&gt;dgrdMain.CurrentPageIndex = e.NewPageIndex &lt;BR&gt;DataBind &lt;BR&gt;end sub &lt;BR&gt;&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;lt;html&amp;gt; &lt;BR&gt;&amp;lt;body&amp;gt; &lt;BR&gt;&amp;lt;asp:DataGrid &lt;BR&gt;id=&quot;dgrdMain&quot; &lt;BR&gt;cellpadding=&quot;1&quot; &lt;BR&gt;showheader=&quot;true&quot; &lt;BR&gt;borderwidth=&quot;0&quot; &lt;BR&gt;allowpaging=&quot;true&quot; 启用分页功能 &lt;BR&gt;pagesize=&quot;3&quot; 每一页显示三条记录 &lt;BR&gt;onpageindexchanged=&quot;dgrdMain_pageindexchanged &quot; 调用第滓车暮猟grdMain_PageIndexChanged() &lt;BR&gt;runat=&quot;server&quot; &lt;BR&gt;/&amp;gt; &lt;BR&gt;&amp;lt;/body&amp;gt; &lt;BR&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;
&lt;P&gt;这样就是最简单的分页，我们可以用参数pagestyle-mode=&quot;nextprev/numericpages&quot;来设定是显示上一页、下一页方式还是直接选择页面的数字方式来实现页面跳转。如果是前者我们可以用pagestyle-nextpagetext来设定包含下一页链接的文本，用pagestyle-prevpagetext来设定包含上一页链接的文本；如果是后者我们可以用PagerStyle-PageButtonCount来设定在使用省略号之前显示的页面编号数量（默认是10） &lt;/P&gt;
&lt;P&gt;今天就说到这里，明天说一下session和COOKIE。 &lt;/P&gt;
&lt;P&gt;十天学会ASP.net之第十天&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;学习目的：学会session和COOKIE的使用 &lt;/P&gt;
&lt;P&gt;在各个网页间的变量传递和一些记录用户的登陆信息要用到session和COOKIE。在ASP.NET中使用COOKIE比ASP中稍微麻烦一点，因为我们要申明变量。 &lt;/P&gt;
&lt;P&gt;首先看一下session的使用，基本和ASP差不多 &lt;BR&gt;写入一个session： &lt;/P&gt;
&lt;P&gt;session[&quot;username&quot;])=&quot;aa&quot;; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;Session(&quot;username&quot;)=&quot;aa&quot; &lt;/P&gt;
&lt;P&gt;读取一个SESSINN： &lt;/P&gt;
&lt;P&gt;string username= session[&quot;username&quot;]; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;dim username=session(&quot;username&quot;) &lt;/P&gt;
&lt;P&gt;再来看一下COOKIE的写入： &lt;/P&gt;
&lt;P&gt;DateTime dt=DateTime.Now; //需要&amp;lt;%@Import Namespace=&quot;System&quot;%&amp;gt;，得到当前时间 &lt;BR&gt;HttpCookie mycookie=new HttpCookie(&quot;logname&quot;);//申明新的COOKIE变量 &lt;BR&gt;mycookie.Value=&quot;aa&quot;;//赋值 &lt;BR&gt;mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1));//设定过期时间为1天 &lt;BR&gt;Response.Cookies.Add(mycookie1);//写入COOKIE &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;dim dt as DateTime &lt;BR&gt;dt=DataTime.Now &lt;BR&gt;dim mycookie as HttpCookie &lt;BR&gt;mycookie=new HttpCookie(&quot;logname&quot;) &lt;BR&gt;mycookie.Value=&quot;aa&quot; &lt;BR&gt;mycookie.Expires=Convert.ToDateTime(dt+TimeSpan.FromDays(1)) &lt;BR&gt;Response.Cookies.Add(mycookie1) &lt;/P&gt;
&lt;P&gt;看一下COOKIE的读取： &lt;/P&gt;
&lt;P&gt;HttpCookie mycookie=Request.Cookies[&quot;username&quot;]; &lt;BR&gt;string username=mycookie.Value; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;-------------------------------------------------------------------------------- &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;dim mycookie as HttpCookie &lt;BR&gt;mycookie=Request.Cookies[&quot;username&quot;] &lt;BR&gt;dim string=mycookie.Value &lt;/P&gt;
&lt;P&gt;到此《十天学会ASP.NET》结束了 &lt;/P&gt;</description>
       </item>
</channel>
</rss>


