摘要:当页面发生错误的时候,ASP.net会将错误信息展示出来,这样一来不好看,二来会泄露网站的内部实现信息,给网站带来安全隐患。因此需要定制错误页,发生错误时显示开发人员定制的页面。配置web.config,配置customErrors区域 mode三个可选值:on:总是显示定制错误页面;off:不显示定制错误页面,直接显示调用堆栈等异常信息;remoteonle:对于本机访问显示调用堆栈等异常信息,对于外部用户的显示定制错误页面。一般设置为remoteonly,这样发生错误的话,管理员可以在服务器的浏览器中看详细错误信息,普通用户看不到。可以在定义错误页中判断Request.UserHostA.
阅读全文
摘要:如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差。而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论有多少人访问都只访问一次数据库。缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快递设备中,取数据的时候直接从快速设备中取。比如CPU的二级缓存、windows文件读取缓存。缓存存在失败的问题:为了保存从缓存中读取数据和慢速数据中数据一致,则需要在慢速数据中对应的数据发生变化的时候清除缓存中相应的数据。缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个
阅读全文
摘要:默认情况下ASP.net是启用ViewState的,这样在页面中会生成冗长的隐藏字段,ViewState对于需要PostBack处理的页面才可能有用,对于不需要交互的页面则完全没有必要用ViewState.ViewState是保存上次的信息的,一般有postback功能才会用到ViewState.禁用ViewState的方式 1.页面整体禁用 在页面顶部Page中EnableViewState="False" 2.指定控件禁用 在控件上EnableViewState="False"页面禁用ViewState以后并没有完全去掉ViewState,只要Vie
阅读全文
摘要:做一个相对完整的示例,用来显示公司的招聘、新闻、产品介绍等功能。1.先在工程中建立完整的文件夹,(Admin为后台管理用文件夹,App_Data是数据库文件夹、BLL为业务逻辑文件夹、css为样式文件夹、DAL为数据操作类文件夹,放置强类型数据集、ErrorPages为错误页文件夹、imgs为图片文件夹、js为调用js,jQuery,CKEditor等的文件夹、Library为要用到的库文件夹、master为母版文件夹、upload为上传文件的文件夹、UserControl为用户自定义控件的文件夹),如下截图:2.建立数据表,T_News(新闻). T_Products(产品表), T_Pro
阅读全文
摘要:在VS2010中的产生ClientID有几种方式,每个控件或页面有个ClientIDMode属性,可以用来决定产生ClientID的方式,它有AutoID,Static,Inherit,Predictable,具体区别请在网上查找。默认为AutoID.但在VS2010中产生的ClientID是有bug.即产生的ClientID和客户端产生的HTML的ID是不一样的,因此在用js或jQuery的函数中要调用指定ID的元素时系统提示不存在此元素。处理思路: 由于每个元素产生的ClientID是唯一的,我们可以给要用到的元素设定一个或多个属性,这此属性也是唯一的,这样可以在js中用这些属性来找到此元
阅读全文
摘要:CKEditor原名为FckEditor,是著名的HTML编辑器,可以在线编辑HTML内容。配置参考文档:主要将ckeditor中的lang、plugins、skins、ckeditor.js、config.js、contents.css、styles.js解压后放到项目的目录下,在发贴页面引用ckeditor.js,然后设置多行文本框的class="ckeditor",代码中仍然可以通过TextBox控件的Text属性来访问编辑器的内容。由于页面提交的时候asp.net会把富文本编辑器中的html内容当成攻击内容,因此需要在aspx中的Page标签中设置ValidateR
阅读全文
摘要:ListView的在位编辑只适合字段比较少、比较简单的场合,复杂数据的编辑、插入、查看等要在单独页面中才可创建一个单独的页面Edit***.aspx,然后在ListView页面中的编辑模板中放一个编辑的超连接,向Edit***.aspx传递?id=1&action=edit.页面顶端增加一个Edit***.aspx?action=addnew的超连接。使用FormView控件进行单条数据的编辑,在Page_Load中判断action,然后使用FormView1.ChangeMode方法切换FormView的模式。强类型DataSet中增加一个GetDataByID方法,在ObjectD
阅读全文
摘要:ListView默认的分页是先从数据源取得所有数据,然后再截取当前页面的部分,在数据量非常大的情况下效率非常低,因此默认的分布基本不能用。应该是只从数据源取得要显示的数据即可。SQL中语句中取得分页数据的方法为:Select * ,ROW_NUMBER() over(order by 排序字段) as rownum From Table. ROW_NUMBER()函数是SQL2005之后提供的一个计算结果集行数的函数,over中指定排序规则,Row_Number()从1开始。只是把数据中的记录从1排序。SQL语句可以这样排序:Select * from (Select id,name,age,
阅读全文
摘要:ListView搭配DataPager控件实现分页。有两种使用方式:一是将DataPager声明到ListView中;一种是DataPager\ListView没有嵌套关系,然后将DataPager的PagedControlID设定为要分页的ListView. 这两种没什么区别,一般用"配置ListView"自动生成的内置方式即可。DataPager的PageSize属性为一页的条数。(*)实现IPageableItemContainer接口的控件都可以使用DataPager进行分页,但是ASP.net内置的控件目前只有ListView实现了这个接口。DataPager 中
阅读全文
摘要:ListView的行按钮和Repeater一样,不同的是取当前行数据的方式,int index=((ListViewDataItem)e.Item).DisplayIndex取出操作行的行号,ListView1.DataKeys[index].Value取出主键的值,如果对数据进行了操作,最后要对ListView执行DataBind刷新数据,由ListView的DataKeynames属性决定存储哪些字段值为主键,可以多个主键(和数据库主键没有直接关系),所有有Values.排序:将LayoutTemplate中的表头用代替,其中CommandArgument的值为排序字段。只要是Comman
阅读全文
摘要:ListView中是无法像TextBox等控件那样将DropDownList的选中值绑定到数据字段的,必须编程处理。如例子:人员的性别(男,女,保密),三个值固定写在DropDownList中。在显示数据的时候DropDownList显示数据的值,在ItemTemplate中加入DropDownList,设定DropDownList的Enabled='false',这样就是只读的。在ItemDataBound事件中e.Item.FindControl()来找到DropDownList控件,然后ListViewDataItem lvDataItem=(ListViewDataIt
阅读全文
摘要:Repeater一般只用来展示数据,如果要增删改则用ListView更方便,使用向导(强类型数据)来使用ListView会自动生成很多模板,免去手写模板代码的麻烦,再进行手工调整即可。首先设定数据源,然后点击智能提示中的“配置ListView”,选择一种布局和样式,然后根据需要勾选“启用编辑”、"启用删除”、“启用插入”、“启用分页”,就会自动生成常用的模板,注意,这只是提高效率的一个方式并不 是唯一选择。LayoutTemplate为布局模板,布局模板中必须有一个ID为itemPlaceholder的服务端控件(4.0后不需要).什么类型无所谓,不会被显示,itemPlacehol
阅读全文
摘要:当把鼠标放在一张小图片上时,图片会自动放大,离开时它变小。我们在静态页面中可以用jQuery来操作。如下为html中的源码。 截图: 在用repeater显示数据库中的图片时,我们也可以用jquery方法把鼠标移动到图片上放大 。基本的操作方式和上例中的连接数据库是一样的,此处省略操作步骤。这里面有两个Repeater,一个为当鼠标在图片上移动时显示人的名称,另一个为自动放大图片。它的源码为: ...
阅读全文
摘要:设计管理一个用户程序,对用户的状态进行管理,当用户状态是启用时整行显示红色。设计思路:用Repeater遍历每行记录,在操作状态的表格中旋转两个按钮,一个为启用功能,另一个为禁用功能,根据Repeater 的itemDataBind和itemCommand事件来控制即可。操作步骤: 1.建立数据表T_Stauts,建立三个字段:自增ID,用户名及用户状态(bit类型)。启用时值为true(1),禁用时为false(0) 2.建立强类型数据集(拖动T_Status表到数据集的表单上).添加两个功能语句:禁用功能(DisnableStatusById)UPDATE T_Status set sta
阅读全文
摘要:此例子绑定的数据源为微软在mssql2000中提供的Northwind数据库中的表Categories。以下为设计步骤:在C# 中连接数据库。如下图:在项目中添加新建项,建立一个数据集,并把Categories从服务器资源列表中拖到这个数据集模板中并点击菜单“生成-生成解决方案”,如下图:在aspx的webform上放一个ObjectDataSource控件,设定它的TypeName为刚刚建立的数据集类型,用它的向导建立即可。在aspx的webform上放一个Repeater控件,用它的向导设定它的DataSourceID为上面的ObjectDataSource在网页中设定它的源码,即加上等模
阅读全文
摘要:ItemDataBound事件: 对于每行数据显示的时候都会调用ItemDataBound事件,在这个事件中可以对当前行进行处理,事件对象主要成员: 1. e.Item.ItemType为当前行的类型,item为ItemTemplate行、AlternatingItem为AlternatingItemTemplate行,还有Header、Footer等取值. 2.ItemIndex为当前行的序号 3.DataItem是当前行绑定的对象 如果要在ItemDataBound事件中对ItemTemplate模板中的控件做处理,则必须使用runat=server的Asp.net控件或者HTML控件,为
阅读全文
摘要:在用到数据库数据并且要逐条显示时,就需要用到repeater\listview等这样的数据库控件进行动态的显示数据。Repeater相当于foreach的功能,用于对绑定数据源中的数据进行遍历显示,每条数据以什么样的格式显示是由它的来决定的,模板会多次显示中的内容,直到遍历完成。表示在这个位置显示当前行的Name字段。调用Eval\Bind这些数据绑定方法的时候要用#. Eval()是只读的,即把数据库中的数据读取到显示的控件中显示出来,是单向的。Bind()是可读写的,即可以把数据从数据库中读取到显示的控件,也可以把控件中的值写入到数据库中,是双向的。因为Eval就是将属性显示到指定的位置,
阅读全文