ASP.NET数据绑定控件

  • ASP.NET数据绑定控件简介
  1. 数据绑定分为数据源和数据绑定控件两部分(①数据绑定控件通过数据源获取和修改数据②数据绑定控件通过数据源隔离数据提供者和数据使用者)
数据绑定控件→数据源→数据库
  1. 数据源:
SqlDataSource( 连接 SQL 数据库 ): 页面禁止直连数据库
AccessDataSource( 连接 Access 数据库 ): 页面禁止直连数据库
ObjectDataSource( 连接类 ): Web 开发中应用最广 / 易于数据库切换
LinqDataSource( 连接 Linq): 很少
EntityDataSource: 很少
XmlDataSource( 连接 XML): 处理 XML 数据时
SiteMapDataSource: SiteMap 专用数据源
  1. 数据绑定控件(重要:ListView(大一统者/推荐) & Repeater):
列表数据绑定控件 (DropDownList RadioButtonList CheckBoxList ListBox BulletedList)
复杂绑定控件 (DataGrid GridView DetailsView FormView ListView  Repeater DataList)
  • ObjectDataSource
  1. ObjectDataSource: 用于将一个类(主要为强类型DataSet)作为数据源
.TypeName: 数据源类名
.DeleteMethod/.InsertM/.SelectM/.UpdateM: 删除/插入/查询/更新
.DeleteParameters/.InsertP/.SelectP/.UpdateP: 相应参数
  1. 生成ObjectDataSource: 通过界面自动生成(手写太麻烦)
  2. Bug: ①绑定Id为Guid类型时会生成下列代码 删除即可
DataObjectTypeName=“System.Guid”
  • DropDownList
  1. DropDownList控件: 显示来自于数据源的数据/两种方法
界面生成(推荐)
代码绑定(可绑定任何实现IEnumerable接口的数据)
  BulletedList2.DataSource = new int[] { 1,3,5,7,9 };
  BulletedList2.DataBind();
.AppendDataBoundItems(bool值): 附加选项(设置”请选择人员”项)
  1. DadioButtonList CheckBoxList ListBox BulletedList等雷同
  • Repeater
  1. Repeater控件: 用于对绑定数据源中的数据进行遍历显示(foreach)
<ItemTemplate>模板
  <ItemTemplate>主键:<%#Eval(“Id”) %>姓名: <%#Eval(“UserName”) %> 年龄: <%#Eval(“Age”) %><br /></ItemTemplate>
  1. Repeater模板:
<ItemTemplate>
<AlternatingItemTemplate> 隔行不同显示风格
<HeaderTemplate> 头部模板
<FooterTemplate> 尾部模板
<SeparatorTemplate> 分割模板
  1. DataBinder类: 提供对应用程序快速开发(RAD)设计器的支持以生成和分析数据绑定表达式语法
①无法继承
②在Web窗体页数据绑定语法中可以使用此类的重载静态Eval方法(返回值object/该方法提供自动类型转换/服务器响应时间较长)
  1. .ItemDataBound事件(e.Item(RepeaterItem类的实例)): 某一项被数据绑定后但尚未呈现在页面上之前发生
获取绑定数据
  DataRowView rowView = (DataRowView)e.Item.DataItem;
  var personRow = (ASP.NET入门.objectDataSource..DAL.DataSetPersons.T_PersonsRow)rowView.Row;
RepeaterItem.FindControl() 获取模板中控件(模板中控件无法通过Id直接获取)
  1. DataTable & DataView & DataSet三者关系:
DataTable 表示内存中数据的一个表
DataView 表示用于排序 筛选 搜索 编辑 导航的DataTable的可绑定数据的自定义视图(一个主要功能是允许在Windows窗体和Web窗体上进行数据绑定)
DataSet ADO.NET核心成员之一(各种数据源在内存中的映射)
  1. .ItemCommand事件: 当单击Repeater控件中的按钮时发生
e.CommandName 命令名称(对应Button.CommandName)
e.CommandArgument 命令参数(对应Button.CommandArgument)
e.CommandSource
  1. Template中的Button按钮: 通过传递<Button>的CommandName CommandArgument属性值获得当前绑定数据信息并进行处理(此处Button按钮响应Repeater控件的ItemCommand事件)
  • ListView
  1. ListView控件: Repeater控件一般只用于展示数据 如果要增删改查则使用ListView更方便
  2. ListView模板:
<ItemTemplate> 奇数行模板
<AlternatingTemplate> 偶数行模板
<EmptyDataTemplate>
<InsertItemTemplate> 插入行模板/<%#Bind() %>双向绑定
<EditItemTemplate> 编辑模板行/<%#Bind() %>双向绑定
<LayoutTemplate> ItemPlaceHolder
  1. 生成ListView: 一般利用界面自动生成
  2. 调整ListView: ①表头汉化②style样式③简化数据展示④
  3. ListView中的数据校验: <Template>模板内编组
  4. .ItemDataBound事件(e.Item(ListViewDataItem类的实例)): 某一项被数据绑定后但尚未呈现在页面上之前发生
获取绑定数据
  ListViewDataItem  lvDataItem = (ListViewDataItem)e.Item;
  DataRowView rowView = (DataRowView)lvDataItem.DataItem;
  var row = (ASP.NET入门.objectDataSource..DAL.DataSetPersons.T_PersonsRow)rowView.Row;
  1. .ItemCreated事件: 在ListView控件中创建项时发生
①ListView新增数据行的默认值设置: 响应ListView的ItemCreated事件 当e.Item.ItemType为InsertItem的时候通过e.Item.FindControl()方法找到控件并初始化(如年龄)
  1. .ItemInserting事件: 在请求插入操作之后 ListView控件执行插入之前发生
①插入数据初始化(Guid): 响应ListView的ItemInserting事件 e.Values为所有字段的键值对(可读可写) e.Values[“Id”]=Guid.NewGuid();
②该事件也可进行数据校验 通过e.Cancel=true来取消非法数据插入
  1. .ItemUpdating事件: 在请求更新操作且ListView控件更新项之后发生
e.OldValues—更新前的值 e.NewValues—更新后的值 
e.ItemIndex—当前更新行行号
  1. ListView控件中的DropDownList绑定问题: 值的编程处理
①显示数据时(响应ItemCreated事件)
②插入数据时(响应ItemInserting事件)
③更新数据时(响应ItemUpdating事件)
  1. ListView控件中的行命令按钮: ①ListView.DataKeyNames属性(主键字段/可以设置多个/与数据库”主键”无直接关系)
①长一岁
  int index = ((ListViewDataItem)e.Item).DisplayIndex;
  Guid id = ListView1.DataKeys[index];
  if(e.CommandName == “IncAge”)
  {
    T_PersonsTableAdapter adapter = new T_PersonsDataAdapter();
    adapter.IncAge(id);
    ListView1.DataBind();
  }
②ListView内置排序机制(效率低/在<LayoutTemplate>中表头放置一个”CommandArgument=排序字段” “CommandName=sort”的服务器端按钮控件即可
  1. DataPager控件: 实现分页
①两种方式: 声明在ListView中/设置DataPager的PagedControlId为要分页的ListView(二者无嵌套关系)
②实现IPageableItemContainer接口的控件都可以使用DataPager进行分页(ASP.NET内置控件目前只有ListView实现了这个接口)
③.PageSize属性: 每页条目数
④.QueryStringField属性: DataPager默认PostBack机制 显示不到地址中因此不利于分享 设置该属性就可以实现超链接形式的分页链接
⑤<Fields>: 按钮显示风格/实现<<  <  …4 5 6…  >  >>效果
  <asp:NextPreviousPagerField>
  <asp:NumericPagerField>
  <asp:TemplatePagerField>
  1. ListView控件中的高效分页: 
①ListView内置分页机制先从数据源取得所有数据再截取当前部分(低效率)
②SQL分页编程
  步骤一: 增加强类型DataSet中两个方法: ①数据条目数 ②取N到M条数据
    ①QueryCount
    select count(*) from T_Persons  //由于数据集编辑器不支持开窗函数 第二种方法中需自行添加参数startRowIndex maximumRows(必须是这两个参数名(回调函数) 由ObjectDataSource的//startRowIndexParameterName maximumRowsParameterName确定)
    ②GetPagedData
    select * from (select Id, Name, Age, row_number() over(order by Id) RowNum from T_Persons)t where t.RowNum>@startRowIndex and t.RowNum<=@startRowIndex + @maximumRows
  步骤二: 配置ObjectDataSource
  步骤三: 配置ListView
  步骤四: 配置ObjectDataSource
    ①删除<SelectParameters>
    ②增加SelectMethod=“GetPagedData” SelectCountMethod=“QueryCount”
    ③设置EnablePaging=“true”
  1. ListView控件中的单独页面编辑: ListView的在位编辑只适合少量字段 对于复杂数据的ListView只展示关键字符按 其他字段的编辑 插入 查看等要在单独页面中进行
  2. FormView控件: 使用用户定义的模板显示数据源中单个记录的值
①模板: <EditItemTemplate><ItemTemplate><InsertItemTemplate>
②获取模板中控件
  //响应ListView1的ItemCreated事件
  If(FormView1.CurrentMode == FormViewMode.Insert)
  {
    ListView1.FindControl(“”);
  }
③.ChangeMode(FormViewMode newMode): 模式切换
  1. 单独页面编辑步骤:
步骤一: 
  创建一个单独页面***.aspx 其中创建ObjectDataSource FormView类的实例
步骤二: 
  设置ListView的InsertPosition属性为”none” 并创建导向***.aspx的新增 编辑 查看超链接(?Id=<%#Eval(“Id”) %>&action=…)
步骤三: 
  强类型DataSet中增加GetDataById()方法 然后配置ObjectDataSource的select方法使用GetDataById()方法 参数传递Id参数的值 参数源”QueryString” QueryStringField:Id
步骤四: 
  ***.aspx中根据action参数值切换FormView状态 并进行相关设置(编辑:完成后导向回ListView界面 插入:完成后导向回ListView列表界面 查看:删除操作超链接)
步骤五:
  细化单独页面编辑: ①删除Id 并且Inserting中为Id赋值Guid ②插入完成 更新完成后重定向到ListUI ③DropDownList绑定 ④JQuery日期控件的绑定(服务器端绑定 浏览器端绑定两种)
  • 问题
  1. src=‘<%#Eval(“Path”) %>’: 对于服务器端控件 <%...%>只能单独存在(无法拼接字符串如’images/<%#Eval(“Path”) %>’)
解决方法
  protected string FormatImgUrl(object url)
  {
    return ResolveClientUrl(“~/objectdatasource/images/” + url);
  }

转载于:https://www.cnblogs.com/lesvies/archive/2011/09/20/2182538.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.Net精品就业班课程表 : 1、.Net基础加强(10天) 核心技术课程 常用数据结构(List、Dictionary、Array)、多态、常用设计模式、反射、常用.net类库、泛型、IO流、委托事件、正则表达式、XML、反射、GC等。 2、数据库开发及ADO.Net(6天) 核心技术课程 数据库开发基础、Microsoft SQLServer基础、SQL语言基础、索引、事务、SQL语言高级技术(空处理、聚合与分组、数据分页、Union、日期函数、类型转换函数、流控函数、表连接、子查询、存储过程、触发器)、数据库设计范式、数据库调优。 ADO.Net(行集、数据集、类型化数据集、SQLHelper、SQL注入漏洞防范、数据绑定)。 3、三层架构MIS项目(5天) 查看项目演示 功能点 本项目基于流行的三层架构(DAL+BLL+UI)。 主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。 技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的Excel文件处理、树状结构数据处理、递归、CodeSmith、代码生成器、三层架构。 项目说明 这是一个用WinForm技术实现的系统,传智播客在开课的半个月就安排一个项目,体现了传智播客“项目驱动学习”的先进教学理念。 4、网页开发与JavaScript(7天) 查看案例演示 核心技术课程 HTML基础加强、css(包含Div+CSS布局)、JavaScript、Dom(事件、window对象、document对象、对话框、定时器、粘贴板、动态Dom、跨浏览器兼容性解决方案、JS压缩和CDN、Internet Explorer Developer Toolbar)、JQuery(JQuery函数、隐式迭代、链式编程、id选择器、tag选择器、CSS选择器、层次选择器、表单选择器、过滤选择器、复合选择器、节点导航、节点操作、样式操作、事件、动画、JQuery Cookie、JQuery Live、JQueryUI)。 课程说明 CSS、JavaScript是ASP.Net开发的基础,把这些掌握好了就能很轻松的学会ASP.Net;Dom是实现网页动态效果的技术,在网站越来越个性化年代,招聘企业对应聘者的Dom水平要求非常高;JQuery是近几年异军突起的JavaScript框架库,几乎成了Web前端开发事实上的标准,大部分企业都是使用JQuery进行Web前端的开发。 学完了这阶段课程,学员将学会开发主流网站的前端效果,比如:焦点图、滚动展示图、网页防复制、网页自定义菜单、WebOS、美女时钟、无刷新评论、评分控件、表格特效、图片悬浮详细信息、微博界面、QQ消息框效果、Div对话框等。 5、ASP.Net开发(12天) 核心技术课程 自己动手写Web服务器(Socket、多线程)、ashx模式Web开发、ViewState、Cookie、Session、Http协议、Web开发基本原则、XSS漏洞防范、Request对象、Response对象、Server对象、虚拟路径、HttpHandler深入、ASP.Net生命周期、WebForm原理、服务端基本控件、WebShell漏洞防范、HTML服务端控件、验证框架、MasterPage、数据绑定控件(ObjectDataSource、列表类绑定控件、GridView、FormView、ListView、Repeater、高效率分页)、CKEditor、Membership、缓存、互联网调优(SEO、HTML压缩、页面静态化、移除ViewState、表单GET化)、URL重写、错误处理、AJAX(XMLHTTP、JQuery AJAX、Json)、全局文件、HttpHandler与HttpModule、IIS配置。 课程说明 由于微软对ASP.Net进行高度封装,因此ASP.Net入门非常简单,开发人员不需要了解HTML、JavaScript、Http协议也可以快速开发出一个Web系统,正因为如此,社会上充斥着大量这样的“拖控件的开发人员”,使得很多Java、PHP等语言的开发人员诋毁ASP.Net开发人员的时候经常会说“你们什么都不懂,就会拖控件”。ASP.Net的快速开发是ASP.Net非常大的一个优点,可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.Net MVC、SEO、网站调优、服务端客户端混合编程、AJAX等)的时候就完全不能胜任。通过上一个阶段的HTML、JavaScript、Dom的学习,学员已经有了很好的HTML、JavaScript基础;在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端JavaScript”、“ViewState的作用”、“Session的原理”等这些基本而又重要的原理,从而扫清后面ASP.Net知识学习的基础性障碍。 由于访问量非常大,因此互联网项目的开发对ASP.Net开发人员的要求非常高,所以我们安排了互联网调优、缓存、网站防黑等内容。 ASP.Net控件数量是非常多的,讲解ASP.Net的教材通常要上千页,让初学者望而生畏,其实ASP.Net大部分控件相似性非常强的,同类型的控件学会了一个那么其他控件也就很容易学会了。比如只要学会了DropDownList,那么RadioButtonList、ListBox、CheckBoxList、BulletedList等几乎不用学就会用;再比如只要学会了ListView,那么Repeater、GridView、FormView等控件也是触类旁通。传智播客认真钻研教学,对知识进行分类、整理、提炼精华,让学员在短时间内掌握ASP.Net技术。 ASP.Net中有一些技术是有局限性的,传智播客根据这些技术在企业中的实际应用情况进行了调整、补充。比如项目中几乎没有在UI层直接访问数据库的,而是采用三层架构,因此我们不讲解UI层直连数据库的控件SQLDataSource,而是把主要精力放在讲解三层架构开发模式。再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7天) 项目说明 1、网上图书商城。这是一个典型的B2C网上商城,使用经典的复杂三层架构(工厂模式)进行开发。涉及图书管理、搜索、订单管理、导航管理等核心模块。在讲解ASP.Net基础后安排这样一个B2C网上商城系统,让学员在实际项目中将学到的知识学以致用。 2、办公自动化OA系统。这是一个典型的基于ASP.Net技术的OA协同办公项目,包含了权限管理、公告管理、文档管理、工作流、论坛管理、新闻模块管理、人员管理等典型的OA系统模块。 3、数据采集和邮件群发。这是一个基于多线程的邮件营销平台,核心技术包括网络爬虫、多线程、HTML解析、邮件发送、生产者消费者模式等。 注:以上三个案例,上课时会根据每个班的课堂反馈选择其中一个案例予以讲解学习。 7、如鹏网项目(9天) 查看项目演示 功能点 站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、缓存管理、广告位管理、RSS输出、水印设置、无刷新上传图片、搜索引擎优化设置、数据备份恢复、伪静态设置、网上商城、订单管理、在线支付(支持支付宝、财付通、块钱等第三方支付平台)、网站调优(数据库优化、缓存、静态页、CSS Spirit、js压缩)。 技术点 搜索引擎技术:Lucene.Net、多线程开发、爬虫技术、网页分析、正则表达式、Log4Net日志框架、Quartz.Net定时作业调度。 大型互联网开发技术:代码生成、网页静态化、基于JQuery的Web2.0页面开发、AJAX、SEO、网站调优、采集器、RSS/XML、网站防黑(防XSS攻击、防注入漏洞攻击、防CC攻击、防挂马、防盗链、敏感词过滤、广告帖智能过滤)、IIS管理与调优、流量分析、第三方脚本嵌入(广告、统计代码、内容联盟等)、图片服务器分离。 项目说明 如鹏网项目是已经上线三年的网站,日访问量最高20000人次,网址www.rupeng.com。本系统旧版本基于PHP、J2EE技术,由如鹏网开发者亲手操刀用.net重写新版本。系统分为前台Web界面、后台管理界面、站内搜索、监控客户端四个子系统。 大型互联网站由于访问量非常大,因此不是那些单纯用ASP.Net控件拖拽开发的开发人员能够开发的,也不是闭门造车能够造出来的,必须是在实际项目中经过无数访问者的使用、反馈、修改才能做出来的。搜房网、汽车之家等大型网站中用到的网站静态化、图片服务器分离、高性能缓存、HTML/JS压缩、CDN、CSS Sprite、负载均衡、Memcached、镜像服务器同步等问题不是那些随手写出来的所谓在线商城、电子商务系统所所能够涉及到的。 这个项目完全按照高访问量互联网站进行设计,通过这个项目,学员不仅可以在实战中巩固对前面学习的ASP.Net、ADO.Net、WinForm等知识的掌握,还可以掌握网站防黑、缓存、SEO、静态化、搜索引擎技术、AJAX等大型互联网开发中涉及到的技术。 8、.Net新技术(Windows Phone、ASP.Net MVC)(6天) 项目说明 未来是移动互联网的时代,未来将是Windows Phone、Android、iphone三足鼎立的时代,掌握了移动开发的技能的人是就业市场的抢手货。微软推出的Windows Phone平台是微软在移动互联网时代的一个重量级产品,微软对于WindowsPhone7的推广力度非常大,因此很多公司也开始进行Windows Phone7产品的研发,2011年下半年Windows Phone7开发人员的需求将会出现井喷,为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了Windows Phone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。点击查看传智播客独创WP7Simulator教学平台。 ASP.Net MVC是微软推出的区别于ASP.Net WebForm的Web开发新技术,由于ASP.Net MVC解决了ASP.Net WebForm的很多缺点,非常适合大型、中型项目的开发,一经推出就受到了.Net开发社区的追捧,很多.Net开发人员的职位要求中都提到了MVC,可见掌握ASP.Net MVC技术必将提升自己就业的砝码。 9、就业指导(2天) 项目说明 总结以往所学知识,讲解《传智播客.Net面试、笔试宝典》,介绍简历、笔试、面试等所需的知识和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值