版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6动态网页设计知识技能目标了解常用动态网页设计技术掌握.net页面连接与访问数据库的基本方法本单元理论授课6学时,上机操作6学时。1/45课次20课时2教具投影仪备注课题任务1动态网页技术目的掌握ASP及其内置对象的使用重点ASP常用内置对象的使用难点无任务1动态网页技术一、任务分析张先生的网站除了展示企业形象和宣传产品外,因为还具有简单的商品管理和客户管理的功能,也就是说具有访问后台数据库的能力,实际上是一个动态网站。另外,张先生还要求为他的网站设置一个网站计数器,从而随时掌握网站访问情况。下面我们就为张先生的网站设计添加这些功能。2/45二、相关知识(一)动态网页技术简介所谓“动态”,并不是指放在网页中的动画,动态网页应具备以下几个特点:交互性:即网页显示内容会根据用户的要求和选择而动态改变和响应,将网页作为客户端输入界面,这是Web发展的大势所趋。自动更新:可自动生成相应页面,从而大大节省工作量。因时因人而变:不同时间、不同人访问时可以产生不同的页面输出。(二)常用动态网页开发技术常用动态网页技术有CGI、JSP、ASP/ASP.NET、PHP等,它们的特点如下:1.CGI在早期,动态网页技术主要采用CGI技术,即CommonGatewayInterface(公用网关接口)。可以使用不同的语言编写CGI程序,如VB、Delphi或C/C++等。将已经写好的CGI程序放在Web服务器上运行,再将其运行结果通过Web服务器传输到客户端的浏览器上。通过CGI建立前台Web页面与后台脚本程序之间的联系,并且可以利用脚本程序来处理访问者输入的信息并据此作出响应。这样的编程方式比较困难且效率低下,因为每一次修改都必须重新将CGI程序编译成可执行文件,所以目前已经较少使用。3/45ASP主要缺点如下:
Windows本身的所有问题都会一成不变的累加到ASP的身上。安全性、稳定性、跨平台性等问题都会因为与NT的捆绑而显现出来。
ASP由于使用了COM组件会变的十分强大,但是由于WindowsNT系统最初的设计问题也会引发大量的安全性问题。只要在这样的组件或是操作中稍不注意,外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失。
ASP是一种脚本语言,除了大量使用组件外,没有办法提高其工作效率。无法实现跨操作系统的应用。关于这一点微软的理由之一是“只有这样才能发挥ASP最佳的能力”。其实正是Windows限制了ASP,ASP的概念本来就是为系统运行于一个多样化环境而设计的。还无法完全实现一些企业级的功能:如完全的集群、负载均衡等。5/453.PHPPHP(HypertextPreprocessor)是一种HTML内嵌式的语言(类似于IIS上的ASP)。而PHP独特的语法混合了C、Java、Perl以及PHP的新语法,它可以比CGI或者Perl更快速的执行动态网页。PHP能够支持诸多数据库,如MSSQLServer、MySql、Sybase、Oracle等,它与HTML语言具有非常好的兼容性。PHP提供了标准的数据库接口,数据库连接方便,兼容性好,扩展性强,可以进行面向对象编程。PHP的优点如下:是一种能快速学习、跨平台、有良好数据库交互能力的开发语言。它语法简单、书写容易,同时Internet上也有大量的代码可以共享。与Apache及其它扩展库结合紧密。PHP与Apache可以以静态编绎的方式结合起来,而与其它的扩展库也可以用这样的方式结合(Windows平台除外)。这种方式的最大的好处就是最大利用了CPU时间和内存,同时极为有效的利用了Apache的高性能的吞吐能力。良好的安全性。由于PHP本身的代码开放所以它的代码在许多工程师手中进行了检测,同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定。到现在为止,PHP具有了公认的安全性能。6/45PHP的缺点如下:数据库支持的极大变化。由于PHP的所有扩展接口都是独立团队开发的,同时在开发时为了形成相应数据的个性化操作,所以PHP虽然支持许多数据库,可是针对每种数据库的开发语言都完全不同。安装复杂。由于PHP的每一种扩充模块并不是完全由PHP本身来完成,需要许多外部的应用库,如图形需要gd库,LDAP需要LDAP库,……,这样在安装完成相应的应用后,再联编进PHP中来。缺少企业级的支持。没有组件的支持,那么所有的扩充就只能依靠PHP开发组所给出的接口。缺少正规的商业支持,这也是自由软件一向的缺点。无法实现商品化应用的开发。由于PHP没有任何编绎性的开发工作,所有的开发都是基于脚本技术来完成的,所有的源代码都无法编译,所以完成的应用只能是自己或是内部使用,无法实现商品化。7/45(三)VisualStudio.NET简介VisualStudio.NET(简称VS.NET)是微软设计的独立于操作系统的开发平台,可以将它看成一套虚拟机,无论机器运行什么操作系统,只要安装了.NET框架,便可以运行.NET可执行程序,享受基于.NET的各类服务。可以从以下三个方面来理解.NET:1.统一了编程语言无论用C#,还是C++,或是VB编写,最终都被编译为.NET中间语言IL。2.扩展了可执行文件的格式可执行文件中不再保存机器码,而是IL指令和元数据,部分结构也被改变用于保存.NET的相关信息。3.改变了程序的运行方式Windows不再直接负责程序的运行,而由.NET框架进行管理。框架中的JIT引擎负责在运行时将IL代码即时编译为本地汇编代码再执行。9/45下面介绍几个关于VS.NET的基本概念。1..NET框架框架(Framework)一词有几种含义,在这里,它指的是创建和运行应用程序的基础。拥有这样的基础使得创建应用程序变得更容易。虽然VB足够灵活,可以提供这些不同的可扩展性机制,但这种灵活性仍然需要你学习几种复杂的API体系结构。你需要了解Win32如何工作,如何在VB中调用它们,还需要了解如何在VB中使用各种COM组件。最后,当你使用Win32API、ADO(也可能使用许多其他COM组件)创建自己的VB应用程序时,你需要管理这些应用程序的部署以及它们的相关性。公共框架背后的想法就是要解决以上这些问题,并使得用户创建健壮的应用程序变得更加容易,而无须学习多种不同的API体系结构,并且无须部署和处理多种对象库的版本问题。10/452. 什么是.NETFramework.NETFramework指的是构成Microsoft.NET平台开发基础的一组技术,其中的关键技术是运行时(Runtime)和类库。运行时负责管理代码,在执行时向它们提供服务,这与VB6.0运行时的作用类似。.NET程序设计语言通过一组公共的统一类来利用各种服务和特性。由于.NETFramework,部署VB.NET应用程序变得更容易了。与VB6.0应用程序不同,你无须配置各种相关性,如单独的数据访问库、XML语法分析器和网络API,因为所有这些功能都是.NETFramework的组成部分。3..NETFramework与VisualBasic.NET作为一个VB开发人员,你从.NETFramework获得的最重要的益处是,可以使用一致的程序设计模型既直接又容易地访问.NET平台。这意味着,你可以使用VB.NET创建很难或不可能使用VB6.0创建的应用程序。11/45(四)ASP及其内置对象1.ASP概述ASP是ActiveServerPage的缩写,利用ASP可以开发动态、交互、高效的Web服务器端应用程序,并且能够实现复杂的Web应用系统,包括电子商务系统。2.ASP的处理流程任何一个Web服务器,只要安装有ASP解释程序,就支持ASP程序。ASP页面是以.asp为扩展名的文本文件。当浏览器向服务器请求.asp文件时,Web服务器调用ASP解释程序,执行所有需要在服务器端运行的脚本命令,并将执行结果传送给客户端浏览器。显然,在Web服务器端运行的脚本大大提高了程序的安全性,也不必担心浏览器能否支持此脚本。3.ASP脚本ASP程序是由HTML标记和脚本语言组合而成的。只要Web服务器上安装了相应语言的脚本引擎,就可以用任何脚本语言来编写ASP程序中的脚本部分。常用的脚本语言有VBScript和JavaScript,这两种脚本既可运行在服务器端,也可以运行在客户端。服务器端脚本执行完后,由Web服务器生成相应的HTML页面,送到客户端浏览器显示。13/45在ASP页面中,服务器端脚本要用分隔符“<%”和“%>”括起来,或在<script>标记中加“runat=server”属性表示脚本要在服务器端执行。例如:<scriptlanguage=”VBScript”runat=”server”>脚本代码</script>客户端脚本由浏览器处理,将脚本嵌入在<script>与</script>之间即可。例如:<scriptlanguage=“VBScript”>脚本代码</script>例6.1ASP动态页面示例。运行结果如下。<%@language=VBScript%><html><head><title>VBScript脚本</title></head><body><ScriptLanguage="VBScript">Dimctimectime=now()document.writectime&"是客户端的时间"</script><br><%=(now())%>是服务器时间</body></html>14/454.ASP的包含文件可以使用#include语句将其他文件插入到当前的ASP文件中。格式如下:#includevirtual|file=”文件名”(1)使用virtual关键字(虚拟目录)用法:#includevirtual=”/Myapp/文件名”(2)使用file关键字(相对路径)用法:#includefile=”Myapp/文件名”
如果要包含的文件在当前网页目录的Myapp子目录中,可以使用以上格式。通常,被包含的文件并不要求特定的扩展名,但习惯上使用.inc扩展名。ASP程序中可多次包含同一文件,被包含的文件也可以包含其他文件,只要不导致循环包含。如A包含B,则B不能再包含A,另外,文件也不能包含自身。15/452.Request对象使用Request对象可以访问基于HTTP传递的所有信息。例如,value=Request.Form(Name),用于从HTML表单中取得用POST方法传递的变量Name的数据。实际上,根据用户不同的提交方式,数据被分别存放到了Request对象的QueryString、Form、Cookies、ClientCertificate和ServerVariables等5个数据集合中。HTML表单提交时数据通过浏览器传递给服务器的Request对象,传递的方式有两种:POST方法和GET方法。GET方法传递过来的数据保存在QueryString集合中,POST方法传递过来的数据保存在Form集合中。(1)Form集合例6.2Request对象的Form集合应用示例。(ex6-2.asp)<html><head><title>Request对象的Form集合应用示例</title></head><body>请填写你的爱好<P><formmethod="POST"action=""><inputtype="text"name="hobby"size="20"><br><inputtype="checkbox"name="hobby"value="足球">足球<inputtype="checkbox"name="hobby"value="乒乓球">乒乓球<P><inputtype="submit"name="B1"value="提交"><inputtype="reset"name="B2"value="重填"><P></form>17/45<%‘第一种方法Response.Write"<br>直接显示hobby集合中的所有的数据<br>"Response.WriteRequest.Form("hobby")&"<br>"‘第二种方法Response.Write"<br>用forEach…next分行显示数据<br>"ForEachiInRequest.Form("hobby")Response.Writei&"<br>"next‘第三种方法Response.Write"<br>用for…next分行显示数据<br>"Fori=1toRequest.Form("hobby").CountResponse.WriteRequest.Form("hobby")(i)&"<br>"next%></body></html>运行时文本框输入“计算机”,并选中“乒乓球”项,其运行结果如上。18/45例6.3将例6.2的代码修改如下,分别获取表单中各控件的值:<html><head><title>Request对象的Form集合应用示例</title></head><body>请填写你的爱好<P><formmethod="POST"action=""><inputtype="text"name="text1"size="20"><br><inputtype="checkbox"name="hobby1"value="足球">足球<inputtype="checkbox"name="hobby2"value="乒乓球">乒乓球<P><inputtype="submit"name="B1"value="提交"><inputtype="reset"name="B2"value="重填"><P></form><%dimistristr=Request.Form("text1")ifRequest.Form("hobby1")<>"0"thenistr=istr&Request.Form("hobby1")endififRequest.Form("hobby2")<>"0"thenistr=istr&Request.Form("hobby2")endifResponse.Write"你的输入和选择是:"&istr%></body></html>在文本框输入“aaa”,并选择“乒乓球”,提交后显示结果如上。19/45用GET方式传递的数据要用Request对象的QueryString集合来获得。例如:<%dimn,p,sn=Request.QueryString("name")p=Request.QueryString("pwd")s=Request.QueryString("sex")Response.Write"你的输入和选择是:"&n&p&s%>
GET方法仅适合于提交较少的数据且安全性要求不高的场合。(3)Cookie集合Cookie集合是Request和Response对象常用的集合,可用来记录客户端用户帐号、密码等信息,以便再次访问时不用再输入这些信息。21/45Cookie是文本文件,是服务器在客户端写入的小文件,在Win2000/XP下被存放在“C:\DocumentandSettings\用户名\Cookie”子目录中。当再次访问站点时,站点页面会在客户端查找这些Cookie标记,每个Web站点都有自己的标记。用户可以禁用这些Cookie,在IE浏览器中,使用【工具】菜单\【Internet选项】\【隐私】卡片\【高级】按钮,点选“覆盖自动Cookie处理”。如下。22/45例6.4Cookie集合应用示例(ex7_21.asp)。
<%Response.Cookies("nike").Expires="2008-10-20"'指定Cookie的过期日期Response.Cookies("nike")=Request.Form("name")'将用户名写入Cookie中Response.Write"欢迎"&Request.Cookies("nike")&"光临网上书店!"%><html><head><title>Cookie集合应用示例</title></head><body><formmethod="POST"action="ex7_21.asp"><P><inputtype="text"name="name"size="20"><inputtype="submit"value="提交"name="B1"><inputtype="reset"value="重写"name="B2"></form></body></html>运行时在文本框中输入“张三”,点“提交”钮,显示结果如上。23/454.Session对象浏览Web站点时,使用Session对象可以为用户保存指定的信息。用户在Web应用程序的网页之间跳转时,存储在Session对象中的信息不会丢失,而是在整个用户会话中一直存在,所以常用Session在各页面间传递数据。例如,在登录页面输入用户名,再转到index.asp页面:Session("用户名")="XXX"‘XXX代表输入或选择的用户名Response.Redirect("index.asp")‘链接到index.asp页面,并传递Session("用户名")的值而在index.asp页面初始化时可执行如下判断:IfSession("用户名")="系统管理员"Then…elseResponse.Redirect("qxerr.asp")‘链接到非法用户显示页面EndIf25/45有关Session对象的其他说明:(1)Session对象的TimeOut属性用来指定应用程序Session对象的超时时限(分钟),默认为20分钟。如:<%Session.TimeOut=5%>(2)Session对象的Abandon方法用来删除所有存储在Session对象中的值并释放这些对象的源。如:<%Session.Abandon%>会话超时时服务器也会删除Session对象中的值。(3)Session和Cookie的区别是Session数据存储在服务器端而Cookie数据存储在客户端(磁盘文件),因而Session的安全性较高。但Session只能在一个对话期的相应页面间共享信息,而Cookie却不受此限制。(六)VisualBasic.NET语言基础(略)26/45课次21课时2教具投影仪备注课题任务2Web数据库访问技术目的掌握使用VB.NET进行数据库操作的基本技术重点VB.NET数据库访问技术难点无任务2Web数据库访问技术一、任务分析使用VB.NET为张先生的网页添加客户管理页面。为便于讲解,这里使用Access数据库。二、相关知识(一)Access数据库基础知识(二)VB.NET连接Access数据库的基本方法29/45三、任务实施【任务场景】为张先生的网页添加管理用户(或商品)数据表的功能。【操作环境】WindowsXP、VS.NET、IIS、SQLServer。【操作步骤】(一)建立工作目录,例d:\abc,并使IIS主目录指向该工作目录;(二)建立数据库及表,并将数据库文件拷入工作目录,如果是新建数据库,按以下操作进行:1、启动Access,新建数据库yhgl.mdb,存放到工作目录,密码设为xxx。数据库中有两个表,结构如下:(1)用户表(user1)用户名(char,10),密码(char,8),权限(char,1),id(自动编号)(2)权限表(qx)权限(char,1),id(自动编号)2、手工往表中输入若干条记录30/45
(三)用户管理页面设计(yhgl.aspx)该页面(效果见前页图片)具有对user1表进行查询、添加、删除和修改(只允许修改密码和权限)记录等功能。1、启动,新建VisualBasic项目,模板为ASP.NETWeb应用程序,位置为,即IIS主目录d:\abc,确定后系统会自动在工作目录下建立一个bin子目录和若干系统文件,并且创建一个名为WebForm1.aspx的Web窗体页面,在右侧的"解决方案资源管理器”中右键单击此页面选择“重命名”将其改名为yhgl.aspx;右键单击此页面选择“将其设为起始页”。2、设置数据库连接串在配置文件Web.config中<configuration>后面加入如下的内容:<appSettings>
<addkey="data"value="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="/><addkey="data1"value="yhgl.mdb"/><addkey="data2"value=";jetoledb:databasepassword=xxx"/></appSettings>
注:加入上面代码能使各页面从配置文件中通过key定义的各键值得到数据库连接串。这里的三个键值data、data1、data2被读到页面后再组合成实际的连接串。31/453、为页面添加两个数据集对象在页面窗口左侧“工具箱”的“数据”栏中向页面拖入两个非类型化数据集(DataSet)对象,分别重命名为ds1和ds2。注:如未显示出“工具箱”或“属性”面板,可在“视图”菜单中进行打开。4、前台界面设计(1)从左侧工具箱往页面中加入1个DataGrid控件(DataSource属性设为ds1,DataMember属性设为user1,DataKeyField属性为用户名)(2)加入4个Label控件(Text属性分别为用户数、用户名、密码、权限)(3)加入2个TextBox控件(4)加入1个DropDownList控件(DataSource属性设为ds2,DataMember属性设为qx,DataValueField属性为权限)(5)加入1个Button控件(Text属性为“添加此记录”)。(6)右击DataGrid控件,选择“属性生成器”,在“列”卡片中取消“在运行时自动创建”复选框,为DataGrid控件添加3个模板列(页眉文本分别为用户名、密码、权限)和2个按钮列(“编辑\更新\取消”和“删除”,PushButton类型)。再对“分页”、“格式”、“边框”三个卡片分别进行相关设置。32/45
其中第1个模板列(用户名)是一个标签,HTML代码如下:<asp:TemplateColumnHeaderText="用户名"><ItemStyleWidth="120px"></ItemStyle><ItemTemplate><asp:labelid="Label7"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.用户名")%>'></asp:label></ItemTemplate></asp:TemplateColumn>将此代码粘贴到页面的HTML代码相应位置。第2个模板列(密码)平时为标签,编辑时为文本框,HTML代码如下:<asp:TemplateColumnHeaderText="密码"><ItemStyleWidth="280px"></ItemStyle><ItemTemplate><asp:labelid="Label5"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.密码")%>'></asp:label></ItemTemplate><EditItemTemplate><asp:TextBoxid="Textbox3"runat="server"Width="276"Text='<%#DataBinder.Eval(Container,"DataItem.密码")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn>将此代码粘贴到页面的HTML代码相应位置。33/45
第3个模板列(权限)平时为标签,编辑时为下拉列表框,HTML代码如下:<asp:TemplateColumnHeaderText="权限"><ItemStyleWidth="120px"></ItemStyle><ItemTemplate><asp:labelid="xb0"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.权限")%>'></asp:label></ItemTemplate><EditItemTemplate><asp:DropDownListid="xb1"runat="server"width="112"DataSource="<%#ds2%>"DataMember="qx"DataTextField="权限"DataValueField="权限"></asp:DropDownList></EditItemTemplate></asp:TemplateColumn>将此代码粘贴到页面的HTML代码相应位置。34/45
5、后台代码设计(1)双击页面空白处,在页面代码最前面加入下列代码以导入类名空间:ImportsSystem.Data.OleDb
(2)从配置文件中读取并生成数据库连接串在页面装载(Page_Load)代码前面加入以下代码:DimconnstrAsString=System.Configuration.ConfigurationSettings.AppSettings("data")'读取键值Dimconnstr1AsString=System.Configuration.ConfigurationSettings.AppSettings("data1")Dimconnstr2AsString=System.Configuration.ConfigurationSettings.AppSettings("data2")Dimconnstr3AsString=connstr+System.Web.HttpContext.Current.Server.MapPath(connstr1)+connstr2DimconnectionAsNewOleDbConnection(connstr3)'建立连接35/45
(3)在页面装载(Page_Load)时执行以下代码:IfNotIsPostBackThenDimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查询适配器Dimadp2AsNewData.OleDb.OleDbDataAdapter("select*fromqx",connection)'建立查询适配器connection.Open()'打开数据连接adp1.Fill(ds1,"user1")'查询命令执行的结果填充到数据集ds1中DataGrid1.DataBind()'数据绑定adp2.Fill(ds2,"qx")'查询命令执行的结果填充到数据集ds2中DropDownList1.DataBind()Label1.Text="用户数:"&ds1.Tables("user1").Rows.CountEndIf36/45
(4)增加翻页功能第1步:在代码中添加以下过程(DataGrid页号变化时触发)SubGrid_Change(ByValsenderAsObject,ByValeAsDataGridPageChangedEventArgs)DataGrid1.CurrentPageIndex=e.NewPageIndexDataGrid1.EditItemIndex=-1'取消编辑状态DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()'打开数据连接adp.Fill(ds1,"user1")'命令执行的结果填充到数据集ds1中DataGrid1.DataBind()EndSub第2步:在HTML代码中<asp:DataGrid>标记行尾部(尖括号内)加入OnPageIndexChanged="grid_change",以使点击页码按钮时能调用grid_change过程37/45
(5)为“添加此记录”按钮设置点击事件代码:DataGrid1.EditItemIndex=-1'取消编辑状态Dimx,y,zAsStringx=TextBox2.Texty=DropDownList1.SelectedValue.TrimIfTextBox1.Text=""ThenResponse.Write("<scriptlanguage='javascript'>alert('用户名不能空白!')</script>")DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查询适配器connection.Open()'打开数据连接adp.Fill(ds1,"user1")'命令执行的结果填充到数据集ds1中TextBox2.Text=xDropDownList1.Items.FindByText(y).Selected=TrueLabel1.Text="用户数:"&ds1.Tables("user1").Rows.CountElse38/45DimsqlstrAsString="insertintouser1values('"+TextBox1.Text+"','"+TextBox2.Text+"','"+DropDownList1.SelectedValue+"',1)"DimcmdAsNewData.OleDb.OleDbCommand(sqlstr,connection)DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查询适配器Dimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1where用户名='"+TextBox1.Text+"'",connection)'建立查询适配器connection.Open()'打开数据连接adp1.Fill(ds1,"user1")'把对user1查询的结果埴充到数据集ds1中Ifds1.Tables("user1").Rows.Count=0Then'如果表中无此用户cmd.ExecuteNonQuery()'执行insertinto命令,添加用户adp.Fill(ds1,"user1")'把对user1查询的结果埴充到数据集ds1中DataGrid1.DataBind()Label1.Text="用户数:"&ds1.Tables("user1").Rows.CountTextBox2.Text=""ElseResponse.Write("<scriptlanguage='javascript'>alert('此用户名已被使用,请另输一个!')</script>")EndIfTextBox1.Text=""EndIf39/45(6)为“编辑”和“删除”按钮添加事件代码SubGrid_ItemCommand(ByValsourceAsSystem.Object,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)Ife.CommandName="Edit"ThenDataGrid1.EditItemIndex=e.Item.ItemIndexDimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查询适配器Dimadp2AsNewData.OleDb.OleDbDataAdapter("select*fromqx",connection)'建立查询适配器connection.Open()'打开数据连接adp1.Fill(ds1,"user1")'命令执行的结果填充到数据集ds1中adp2.Fill(ds2,"qx")'命令执行的结果填充到数据集ds2中DataGrid1.DataBind()EndIfIfe.CommandName="Cancel"ThenDataGrid1.EditItemIndex=-1'取消编辑状态DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()adp.Fill(ds1,"user1")‘查询命令执行的结果填充到数据集ds1中DataGrid1.DataBind()EndIf40/45Ife.CommandName="Delete"ThenDataGrid1.EditItemIndex=-1'取消编辑状态DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)DimcmdAsNewData.OleDb.OleDbCommand("deletefromuser1where用户名='"+DataGrid1.DataKeys(e.Item.ItemIndex)+"'",connection)‘建立删除命令connection.Open()cmd.ExecuteNonQuery()'执行删除命令adp.Fill(ds1,"user1")IfInt(ds1.Tables("user1").Rows.Count/10)=ds1.Tables("user1").Rows.Count/10ThenIfDataGrid1.CurrentPageIndex>0ThenDataGrid1.CurrentPageIndex=DataGrid1.CurrentPageIndex-1EndIfEndIfDataGrid1.DataBind()Label1.Text="用户数:"&ds1.Tables("user1").Rows.CountEndIf41/45Ife.CommandName="Update"ThenDimxmAsTextBoxDimxxbAsDropDownListDimxxb2AsStringDimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()adp.Fill(ds1,"user1")xm=e.Item.FindControl("TextBox3")xxb=e.Item.FindControl("xb1")xxb2=xxb.SelectedValueDimsqlstrAsString=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 5452-201756%磷化铝片剂》
- 2026年非金属矿物制品业数字化工厂建设实践与案例分析
- 煤矿班前安全培训的内容
- 江西抚州高新区招聘社区工作者考试真题2025
- 国家基层甲状旁腺疾病防治指南 2025 版解读
- 长沙市芙蓉区招聘事业单位考试真题2025
- 《JBT 11710-2025YVF系列(IP55)变频调速专用三相异步电动机技术规范(机座号355~450)》专题研究报告
- 口腔科牙周疾病预防管理计划
- 粮食安全应急培训内容
- 渡口安全培训内容
- 车辆伤害应急预案演练记录(简单)
- 制药空调净化系统基础培训
- GB/T 26610.2-2022承压设备系统基于风险的检验实施导则第2部分:基于风险的检验策略
- JJG 141-2000工作用贵金属热电偶
- GB/T 3478.1-2008圆柱直齿渐开线花键(米制模数齿侧配合)第1部分:总论
- 小学音乐四分音符-八分音符-课件-(2)ppt
- GB/T 13234-2018用能单位节能量计算方法
- 护理三基三严测试题库含答案
- 电气化铁路安全及行车组织课件
- APQP培训讲义优秀作品课件
- 钟吕水利枢纽复合土工膜防渗面板堆石坝设计 说明书
评论
0/150
提交评论