在ASP.NET 2.0中操作数据.基于用户对修改数据进行限制
- 格式:doc
- 大小:1.26 MB
- 文档页数:20
(编号) 北京理工大学远程教育学院《开发技术》模拟试卷(二)教学站学号姓名手机号成绩重要说明:本试卷所有的题目都基于.NET Framework3.5。
一填空题(每空1分,共10分)1.如果我们希望硬盘中不在Web站点的主目录中的网页也可被浏览时,就必须将该目录建立为Web站点的虚拟目录。
2.在中,如果将浏览器从一个页面(first.aspx)重定向到另一个页面(second.aspx),并使用查询字符串传递两个变量userName和userType,则在first.aspx中通过使用语句:Response.Redirect ( ) ;来传送变量,在second.aspx中通过:string uName = ; string uType = ; 来获取变量。
3.若要使用网站导航控件,必须在Web.sitemap文件中描述网站的结构。
4.数据绑定控件通过DataSourceID属性与数据源控件实现绑定。
的状态管理分为服务端和客户端两种。
6.如果要检查输入值是否在[0,100]之间,应该使用RangeValidator验证控件;检查电话号码或电子邮件地址的数据验证控件是RequiredFieldValidator。
二判断对错(每题1分,共10分)1.WWW是Internet上的一种服务形式。
√2.html文件需要从服务器端下载到客户端,由浏览器解释执行。
√ Framework 3.0 引入了LINQ查询。
√是解释型的而非编译型的。
×5.C#中可以通过属性获取或改变类中私有字段的内容,这种方式充分体现了类的封装性。
√6.同一个控件可以使用多个验证控件。
√7.对网站应用了某个主题后,网站中的某个或某些网页仍可以应用其它主题。
×8.FileUpload控件不能限制上传文件的类型。
×9.SqlDataSource控件可以执行SQL Server中的存储过程。
√10.LINQ查询表达式的返回值必须明确指定数据类型。
三层架构步骤讲解前言:与ASP相比在Web应用开发上无疑更容易,更有效率。
Web开发大部分还是围绕着数据操作,建立数据库存储数据,编写代码访问和修改数据,设计界面采集和呈现数据。
走过学习入门阶段后,真正开始着手开发一个Web项目时,才发现错综复杂的数据与关联根本就不是SqlDataSource和AccessDataSource数据源控件能简单解决的,而恰恰是被忽视了的一个ObjectDataSource数据源控件才是真正踏入开发门槛的关键,由此也对三层架构模式有了初步体验。
一.三层架构介绍设计模式中的分层架构(可以参考一下J2EE中MVC模式)实现了各司其职,互不干涉,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
这样就能更好的实现开发中的分工,有利于组件的重用。
所以这些年关于模式的研究有很多成果,应用也很广泛。
一个好的模式在程序开发和后期维护中作用重大。
三层架构自底向上分为:数据访问层(DAL),业务逻辑层(BLL)和表示层(PL)。
数据访问层(DAL):使用了一个强类型的DataSet作为数据访问层,只是单纯的对数据进行增,删,改,查询和判断存在等等较通用的数据访问方法(由SQL语句来提供),不应该有“事务”存在。
业务逻辑层(BLL):业务逻辑层是在数据访问层和表示层之间进行数据交换的桥梁,按业务需求调用数据访问层中的方法组合,集合了各种业务规则到一个BLL中,例如通过条件进行判断的数据操作或“事务”处理。
BLL都是以类库(Class Library)的形式来实现的。
表示层(PL):表示层是为客户提供用于交互的应用服务图形界面,帮助用户理解和高效地定位应用服务,呈现业务逻辑层中传递的数据,用页面来实现。
二.三层架构应用实现随着 的不断升级,可以很方便的使用 来构建B/S 三层架构的应用程序,下面以“教师业务信息管理系统”项目中的部分例子来演示如何使用 2.0 和SQL Server 2005数据库来构建一个三层架构的应用程序。
一、单选一、单选1、S ESSION对象的默认有效期为多少分钟(C)A、10B、15C、20D、应用程序从启动到结束、应用程序从启动到结束2、留言板必须加强管理,这是因为(D)A.存储容量有限存储容量有限B.查看必须经过授权查看必须经过授权C.影响查看的速度影响查看的速度D.可能存在过时或不健康的留言可能存在过时或不健康的留言3、V alidationSummary控件常用属性中设置错误信息显示格式的是(B)A:HeaderTxet B:DisplayMode C:ShowMessageBox D:V alidate 4、数据比较验证是通过(B)控件来实现。
)控件来实现。
A.RangeV alidator pareV alidator C. ControlToV alidate D.ErrorMessage 5、在设计完网页前台页面及编写完后台程序代码之后,启动调试的快捷键是:(B) A.F4B.F5C.F2D.F3 6、下面不属于W eb服务器控件的是(A)HtmlInputButton B、RadioButton C、DropDownList D、CheckBox 7、NET类库,很多能装载磁盘文件的类都是凭物理文件夹路径来装载文件的,因此类库,很多能装载磁盘文件的类都是凭物理文件夹路径来装载文件的,因此)把虚拟路径映到物理路径。
在WEB页的程序代码中常常使用(A )把虚拟路径映到物理路径。
A.Server对象的MapPath方法方法B. Server对象的Transfer方法方法C. Request对象的FilePath属性属性D. Request对象的Url属性属性8、下面对服务器验证控件说法正确的是(A)A.可以在客户端直接验证用户输入,并显示出错信息.可以在客户端直接验证用户输入,并显示出错信息B.服务器其验证控件种类丰富共有10中之多中之多C.服务器验证控件只能在服务端使用.服务器验证控件只能在服务端使用D.各种验证控件不具有共性,各自完成功能.各种验证控件不具有共性,各自完成功能9、Master指令中能设置自动从标记生成并在处理母版页是自动进行编译类的类名的属性是(A)A:Classname B:Codefile C:Compilationmode D:Debug 10、以下不属于FreeTextBox编辑器控件主要提供的功能是(D)A:插入图片支持网络即时打印功能 D:支持CSS 插入图片 B:插入链接插入链接 C:支持网络即时打印功能11、在中,通过(C)可以增强网页功能的严谨性和可靠性。
C常用面试题库1.简述private、protected、public、internal修饰符的访问权限。
答.private:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
public:公共成员,完全公开,没有访问限制。
internal:在同一命名空间内可以访问。
2.列举页面之间传递值的几种方式。
答.1.使用QueryString,如....id=1;repone.Redirect()....2.使用Seion变量3.使用Server.Tranfer3.一列数的规则如下:1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
答:publicclaMainCla{publictaticvoidMain(){Conole.WriteLine(Foo(30));}publictaticintFoo(inti){if(i<=0)return0;eleif(i>0&&i<=2)return1;elereturnFoo(i-1)+Foo(i-2);}}4.C#中的委托是什么?事件是不是一种委托?答:委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托5.override与重载的区别答:override与重载的区别。
重载是方法的名称相同。
参数或参数类型不同,进行多次重载以适应不同的需要Override是进行基类中函数的重写。
为了适应需要。
6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Seion、Cookie、Application,您有几种方法进行处理?答:thi.Server.Tranfer7.请编程遍历页面上所有Te某tBo某控件并给它赋值为tring.Empty?答:foreach(Sytem.Window.Form.Controlcontrolinthi.Control){if(controliSytem.Window.Form.Te某tBo某){Sytem.Window.Form.Te某tBo某tb=(Sytem.Window.Form.Te某tBo 某)control;tb.Te某t=String.Empty;}}8.请编程实现一个冒泡排序算法?答:int[]array=newint;inttemp=0;for(inti=0;i<array.Length-1;i++){for(intj=i+1;j<array.Length;j++){if(array[j]<array){temp=array;array=array[j];array[j]=temp;}}}9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?答:不是。
一、填空题(1)ASPX网页的代码储存模式有两种,它们是___和___代码分离模式。
答案:代码分离模式,单一模式(2)当一个Web控件上发生的事件需要立即得到响时,应该将他的属性设置为true。
答案:AutoPostBack(3)请将下列数据(nn)在TextBox控件中显示出来。
Double nn=4512.6;TextBox1.Text=答案:nn.ToString()(4)当需要将TextBox控件作为密码输入框时(要求隐藏密码的代码),应该将控件的TextMode属性设置为.答案:Password(5)下面是一个转移到新网页的指令:Response.Redirect(“”)答案:新网页的Ur1(6)在设计阶段必须将各个验证控件的属性指向被验证的控件。
答案:ControlToValidate(7)下面是设置和取出Session对象的代码。
设置Session的代码是:Session[“greeting”]=“hello wang!”;取出该Session对象的语句如下:string Myvar=;答案:Session[“greeting”].ToString()(8)下面是使用Application对象时防止竞争的代码。
Application.;//锁定Application对象Application[“counter”]=(int)Application[“counter”]+1;Application.;//解除对Application对象的锁定答案:lock(),unlock()(9)废除Session的语句是:。
答案:Session.Abandon()(10)打开文件系统网站时将自动打开一个服务器,这是一个轻量级服务器,可以用来对程序进行检查和调试工作。
答案:开发(11)所谓分布式类就是在多个文件中使用相同的____,相同的____,而且每个类的定义前面都加上____修饰符,编译时编译器就会自动的将这些文件编辑成一个完整的类。
东北师范大学22春“计算机科学与技术”《基于Web程序设计》作业考核题库高频考点版(参考答案)一.综合考核(共50题)1.下列几个是Response对象的方法,哪个是用来输出二进制信息的?()A.WriteB.FlushC.BinaryWriteD.BinaryRead参考答案:C2.HTML使用(锚)标签来创建连接另一个文档的链接。
()A.错误B.正确参考答案:B3.枚举类型是由一组命名常量组成的类型。
()A.正确B.错误参考答案:A4.在中,Application是()类的实例。
A.PageB.HttpApplicationUtilityC.HttpApplicationStateD.HttpApplication参考答案:C下面()不是Global.asa文件可用来存放是事件。
A.Application_OnEndB.Application_OnStartC.Session_OnEndD.Sever_OnStart参考答案:D6.IIS(Internet Information Server)是Microsoft所提供的Internet信息服务系统,允许在公共Intranet或Internet的Web服务器上发布信息。
()A.错误B.正确参考答案:B7.在十六进制数制系统中,使用()表示十进制数制系统中的12。
A.DB.CC.BD.A参考答案:B8.当Application对象的生命周期开始时,Application_onstart事件会被启动。
()A.错误B.正确参考答案:B9.报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
()A.正确B.错误参考答案:A10.php,jsp,asp,aspx等,这些扩展名的网页文件都是采用动态网页技术制作出来的。
()A.正确B.错误参考答案:A11.在中,关于下列代码的说法正确的是()。
HttpCookie user=new HttpCookie(“name”,”王飞”); //1 Response.Cookie.Add(user); //2 user.Expires=DateTime.Now.AddMinutes(4); //3 Response.Write(Request.Cookie[“name”].Value); /4A.代码行1错误B.代码行2错误C.代码行3错误D.代码行4错误参考答案:D12.下面哪一个文件是全局配置文件?()A.default.aspx.csB.Web.configC.Styles.cssD.Global.asax参考答案:B13.隐式声明是指用户可以直接在代码中使用变量而无需声明。
第一章测试1.模型(Model)是应用程序中用于处理应用程序数据逻辑的部分。
()A:对B:错答案:A2.HTML是一种用于制作超文本文档的简单标记语言。
()A:对B:错答案:A3.CSS可用于控制HTML和XML内容的数据交换形式。
()A:错B:对答案:A4.JavaScript是为适应静态网页的交互性而诞生的一种新的脚本(Script)语言。
()A:对B:错答案:B5.Ajax是指一种创建交互式网页应用的网页开发技术。
()A:对B:错答案:A第二章测试框架中包含编译器 csc.exe。
()A:错B:对答案:B2.处于同一个命名空间中的类必须有明确的相互关系。
()A:错B:对答案:A3.在C#中不存在全局方法和变量,所有的变量和方法都包含在类的定义中。
()A:对B:错答案:A4.C#标识符的首字符必须为字母、下划线或@。
()A:对答案:A5.声明数组时既指定了数组的名字和数组元素的类型,又开辟了内存空间。
()A:对B:错答案:B第三章测试1.类体由成员变量定义和成员方法定义两部分组成。
()A:错B:对答案:B2.C#修饰符按功能可分为两类:类修饰符和成员修饰符。
()A:错B:对答案:A3.构造方法的主要作用是完成对类的对象的初始化工作。
()A:对B:错答案:A4.析构方法能被重载,但不能被继承。
()A:对B:错答案:B5.用protected修饰的成员变量可以被3种类所引用:该类自身、该类的嵌套类及该类的子类。
()A:对B:错答案:A第四章测试1.HTML元素和属性是不区分大小写的,但通常约定标记符使用大写字母。
()A:错B:对答案:B2.是HTML文件头标记符,用来描述HTML首部的内容,其作用是说明文档的整体信息。
()A:对答案:A3.在HTML文档中,可以用回车、空格、Tab键来调整文档段落的格式。
()A:错B:对答案:A4.锚点标签定义元素仅限于文字。
()A:错B:对答案:A5.称为区隔标记,其作用是将页面分隔为不同的区域。
备注:1.考试题型包括选择题(80分)、填空题(20分)2.考试主要内容范围:上课PPT中涉及到的知识点和本大纲所列知识。
3.闭卷考试。
复习资料一、基础知识点(对应填空题、解答题)(1) ASPX网页的代码储存模式有两种,它们是__代码分离模式_和_单一模式__代码分离模式。
(2) 当一个Web控件上发生的事件需要立即得到响时,应该将它的__AutoPostBack_ 属性设置为true。
(3) 请将下列数据(nn)在TextBox控件中显示出来。
Double nn = 4512.6;TextBox1.Text = nn.Tostring();(4)当需要将TextBox控件作为密码输入框时(要求隐藏密码的代码),应该将控件的TextMode属性设置为Password.(5) 下面是一个转移到目标网页的指令:Response.Redirect(“新网页的Url ”)(6) 在设计阶段必须将各个验证控件的(ControlToValidate)属性指向被验证的控件。
(7) 下面是设置和取出Session对象的代码。
设置Session的代码是:Session[“greeting”]=“hello wang !”;取出该Session对象的语句如下:string Myvar= Session[“greeting”].ToString();(8) 下面是使用Application对象时防止竞争的代码。
Application. ; //锁定Application对象Application[“counter”]=(int) Application[“counter”]+1;Application. ; //解除对Application对象的锁定lock(),unlock()(9) 废除Session的语句是:(Session.Abandon())。
(10) 打开文件系统网站时将自动打开一个(开发)服务器,这是一个轻量级服务器,可以用来对程序进行检查和调试工作。
第12章成员资格和角色管理成员资格和角色管理功能的核心是利用自动生成数据库表,多个实现管理功能的API、成员资格和角色管理提供程序,实现模块化和自动化的成员资格和角色管理模式。
具体而言,包括创建和管理用户和角色管理信息、实现对多种数据源中用户和角色信息的管理、验证访问应用程序的用户凭证、支持使用Cookie缓存角色信息实现角色管理和成员资格管理等功能的集成。
12.1身份验证和授权Web站点创建的页面用于供用户浏览访问。
这些页面可以分为两种类型:一中是允许所有用户访问,即无论用户身处网络的什么位置,无需用户凭证(如用户和密码)都可以访问页面;另一种是只允许部分用户访问,即所谓的身份验证。
身份验证就是验证标识的过程,即验证某人(或某物)与其声称的人(或物)是否一致。
该人或物称为“当事者”。
身份验证要求证据,称为“凭证”,例如,客户端应用程序可以将密码用作凭证。
所谓授权就是指一旦用户凭证通过验证,就必须确定此用户是否可以访问特定的资源,这个过程称之为授权。
本节主要介绍身份验证概述、Forms验证概述、FormsAuthentication类和用户授权概述。
12.1.1身份验证概述身份验证是从用户处获取标识凭证(如用户名和密码),并通过某些授权机构验证那些凭证的过程。
如果这些凭证有效,则将提交这些凭证的实体视为通过身份验证。
在身份得到验证后,授权进程将确定该身份是否可以访问指定资源。
2.0身份验证有3种方式,它们分别是Windows验证、Passport验证和Forms验证。
下面将对以上3种验证方法进行详细讲解。
1.Windows验证在应用程序中,Windows身份验证将Microsoft Internet信息服务(IIS)所提供的用户标识视为已经通过身份验证的用户。
IIS提供了大量用于验证用户标识的身份验证机制,其中包括匿名身份验证、Windows集成的(NTLM)身份验证、Windows集成的(Kerberos)身份验证、基本(base64编码)身份验证、摘要式身份验证以及基于客户端证书的身份验证。
智能小区物业管理系统的设计摘要随着社会经济的不断发展以及建筑水平的不断提高,城市已经基本实现了住宅小区化管理。
由于人们生活质量的提高,对小区物业的服务水平提出了更高的要求,已不仅仅局限于小区清洁、安保等方面的需要。
这样要求小区管理者对物业管理进行宏观的和微观的细致管理,通过计算机和互联网对小区进行智能化管理较好的满足了这一需求。
本文探讨了小区物业管理系统的设计与开发,旨在提高小区的管理水平。
关键词 b/s结构;物业管理;web;技术中图分类号c93 文献标识码a 文章编号 1674-6708(2011)57-0075-02目前,我国房地产行业发展较为迅速,但是物业管理水平却相对滞后。
物业管理是现代商业和住宅管理中的极其重要的工作,随着城市的不断发展,各种住宅、办公楼、商业大厦日益增多,物业管理中的问题日益突出。
部分小区的物业管理处于原始的手工记录与管理阶段,已远远满足不了高速发展的现代社会。
近年来,已有一些较为成熟的通用型物业管理信息系统,基本能够满足不同小区的物业管理需求,但是,因各个小区的管理模式不同,通用型的物业管理系统,并不能完全融入到实际管理工作中。
所以,针对各小区个性化的需求开发符合实际需求的管理系统是新的趋势。
本文介绍了技术的优点,阐述的工作流程和访问web数据库的方法,重点介绍整个系统的体系结构、系统功能模块设计、数据库表设计。
本文探讨用2.0技术开发基于b/s模式有数据库作后台支持的智能小区物业管理系统的原理和具体实践。
1基于b/s模式的多层次结构1.1三层b/s结构web应用程序是由服务器端的web服务器和客户端的浏览器相互配合来完成功能,所以其结构又被成为b/s(browser/server)结构。
通过互联网的链接,用户通过www浏览器(browser)实现与核心数据库(server)的连接,所有信息通过网页的修改完成,并且保持与核心数据库同步更新。
保证数据的一致性[1]。
基于ASP.NET的在线考试系统设计与实现作者:蒲玄及杨百龙杨建飞来源:《现代电子技术》2008年第22期摘要:随着互联网的普及,越来越多的学校采用在线考试的形式,利用网络进行无软盘、无纸化的在线考试,大大提高了考试的可靠性、有效性、降低了考试成本。
在技术和SQL Server 2005数据库系统的基础上,设计和实现基于的四层体系结构的在线考试系统,并实现动态随机组卷和在线阅卷等主要功能,在实际应用中效果良好。
关键词: 2.0;在线考试系统;SQL Server 2005;四层体系结构中图分类号:TP311文献标识码:B文章编号:1004-373X(2008)22-059-03Design and Realization of On-line Exam System Based on PU Xuanji1,YANG Bailong1,YANG Jianfei2(1.The Second Artillery E ngineering College,Xi′an,710025,China;2.Qingzhou Non-commissioned ofticers School of Second Artillery,Qingzhou,262500,China)Abstract:Along with the popularization of Internet,more and more schools adopt the on-line exam,using the net non-disk,non-paper can improve the reliability,validity of the exam and it can reduce the cost of the exam.On the basis of the technology of and the database of SQL Server 2005,this Paper designs and realizes the on-line exam system with four tiers,and realizes the function of forming the paper at random and the function of judging the paper on-line,it has worked well in practice.Keywords: 2.0;on-line exam system;SQL Server 2005;four tiers architecture1 引言从目前的应用来看,一般基于Web的在线考试系统都需大量占用服务器资源。
在ASP.NET 2.0中操作数据::基于用户对修改数据进行限制 导言 很多Web程序都支持用户帐号,根据不同的登录用户提供不同的选项,报表等功能。例如,就我们的教程中,我们要允许供应商公司的一些账户能登录网站并更新它们的产品-包括产品名称和单价,或许还有供应商的信息,比如它们的公司名称,地址,以及联系人信息等等。此外,可能我们还想包含一些帐号留给我们自己公司用户,以便让它们能够登录并进行产品信息修改,比如股价,级别调整等等。我们的Web程序同时也可以允许匿名登录,但是仅仅让这些用户浏览数据。并包含一个系统用户,通过对ASP.NET页面中的数据控件能够进行数据的增,改,删。
在这篇教程中,我们将考察如何动态地根据不同的访问用户来调整数据的修改能力。更进一步,我们新建一个页面,通过一个可编辑的DetailsView来显示供应商信息,以及一个GridView控件列出供应商提供的产品。如果访问者来自我们公司,它们可以查看任何供应商信息,编辑他们的地址,编辑任何一个供应商提供的产品信息。然而,如果用户来自某个具体某个公司,它们只能查看和修改他们自己公司的地址信息,或者修改他们那些没有缺货的商品信息。
图1:一个来自我们公司的用户可以编辑任何一个供应商信息
图2:一个来自某个供应商公司的他只能查看和编辑他们自己的信息 让我们开始吧! 注意:ASP.NET 2.0的MemberShip体系提供了一个可以创建,管理,验证用户帐号的标准的,可以扩展的平台。考虑到考察membership体系已经超出了本文的内容,本文将假设匿名用户已经通过了membership体系,可以认为他们是来自一个具体的供应商或者是我们公司。有关更多membership的内容,可以参考我的 考察ASP.Net 2.0 的Membership, Roles, Profiles文章系列。
第一步: 允许用户能够指定他们的访问权限 在实际的Web应用程序中,一个用户的帐号信息已经包含了识别他们是来自我们公司或者供应商,而且这种信息在用户一登录之后便可以在ASP.NET中代码访问到。这个信息可以通过ASP.NET 2.0的角色体系获取,作为档案系统或者其他业务上的用户帐号信息。
由于这篇教程是示范针对不同登录用户调整数据修改的能力, 并不是要凸显使用ASP.NET 2.0的membership,roles,和profile系统,我们会使用一种很简单的机制来决定用户访问网页的这种能力-通过一个下拉框,用户可以选择他们想要查看或修改任何一个供应商的信息,或者是作为一个供应商,只能查看和修改自己的信息。如果用户使用默认的可以查看和修改任何供应商信息,那么她分页查看所有的供应商,编辑他们的地址信息,以及编辑选择的某个供应商的产品的名字或者单价。如果选择了只能查看和编辑某个供应商的信息,那么她只能查看这个供应商的产品具体信息,更新那些没有过期的产品的名称和单价。
接下来我们将要新建一个DropDownList并给它填充系统供应商信息数据。打开EditInsertDelete文件夹下的UserLevelAccess.aspx页面,添加一个DropDownList控件,设置它的ID属性为Suppliers,并绑定到一个命名为AllSuppliersDataSource的ObjectDataSource控件。 图3:创建一个名为AllSuppliersDataSource的ObjectDataSource控件 因为我们想要DropDownList显示所有的供应商,我们配置ObjectDataSource调用SuppliersBLL类中的GetSuppliers()方法。同时确保控件的Update()方法映射到SuppliersBLL类的UpdateSupplierAddress方法,而这个ObjectDataSource控件将同时被下一步中的DetailsView控件使用。
完成ObjectDataSource的设置后,再完成设置Suppliers下拉框控件,让它的每个ListItem显示数据成员为CompanyName,数据成员的值为SupplierID。
图4:配置Suppliers DropDownList使用CompanyName和SupplierID数据成员 到这里,这个DropDownList列出了数据库中的所有供应商的名字。然而,我们还需要对下拉框添加一个“显示/编辑所有供应商”的选项。可以通过设置Suppliers下拉框的AppendDataBoundItem属性为true,并添加一个ListItem,设置它的Text属性为“显示/编辑所有供应商”,value属性为-1来实现。这些可以通过直接声明标记语言或者在属性窗口的设计器中点击下拉框的Item属性来添加完成。
注意:可以回头参考教程《使用DropDownList过滤的主/从报表 》获得关于添加一个下拉框中“显示所有”选项的详细讨论。
通过设置AppendDataBoundItems属性和添加ListItem后,这个DropDownList的声明标记如下所示:
DataSourceID="AllSuppliersDataSource" DataTextField="CompanyName" DataValueField="SupplierID">
Show/Edit ALL Suppliers
图5是一个当前在浏览器中操作的截图。 图5:包含一个“Show ALL”的ListItem的Suppliers下拉框,以及其他每个供应商名称 由于我们想让用户改变选择后,立刻更新用户界面,我们需要设置Suppliers下拉框的AutoPostBack属性值为true。在第二步中我们将创建一个DetailsView控件来显示基于用户选择后显示的供应商详细信息。然后,在第三步中,我们会创建一个下拉框的SelectedIndexChanged事件的处理器,在代码里面我们将根据当前的选择来把具体的供应商信息绑定到DetailsView控件中。
第二步:添加一个DetailsView控件 让我们使用DetailsView控件来显示供应商信息。对于能够查看和编辑所有供应商信息的用户,这时DetailsView将支持分页,并允许用户逐个查看每个供应商资料。如果用户是其中的某个供应商,这时DetailsView将只显示当前这个供应商信息,而且不会包含分页的界面。在两种情况下,DetailsView都将允许用户能够编辑所能访问到的供应商的地址,城市和国家等属性值。 在Suppliers下拉框下添加一个DetailsView,并设置它的ID属性为SupplierDetails,然后把它绑定到前面创建的AllSuppliersDataSource ObjectDataSource控件。之后,在DetailsView的智能标签中打开Enable Paging和Enable Editing 的多选框。
注意:如果你在DetailsView标签代码中没有看到Enable Edit属性,那是因为你没有把ObjectDataSource的Update()方法绑定到SuppliersBLL类的UpdateSupplierAddress方法。花一点事件回过去重新设置一下,然后再回来就能看到Enable Edit属性。
由于SuppliersBLL类的UpdateSupplierAddress方法只允许有四个参数-supplierID,address,city以及country,需要修改DetailsView的BoundFields让CompanyName和Phone两个BoundFields是read-only。此外,把SupplierID这个BoundField完全删除。最后,这个AllSuppliersDataSource控件已经含有一个OldValuesParameterFormatString属性,值为original_{0}。再花些时间把它完全删除或者修改它的值为默认值{0}。
通过对SupplierDetails这个DetailsView控件以及对AllSuppliersDataSource这个ObjectDataSource控件的设置,我们的代码将如下所示:
1 2 3 SelectMethod="GetSuppliers" TypeName="SuppliersBLL" 4 5 UpdateMethod="UpdateSupplierAddress"> 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23erateRows="False" 24 25 DataKeyNames="SupplierID" DataSourceID="AllSuppliersDataSource"> 26 27