模板与数据绑定

  嵌入式代码

    格式为:<% %>
    原理是当成文本通过HtmlTextWriter的Write方法输出

  嵌入式表达式

    格式<%= %>
    不能给属性赋值

  绑定表达式

    格式<%# %>
    当控件的DataBinding事件触发的时候,会调用这个表达式

  在ASP.NET中如果一个属性的类型是ITemplate,那么,这个属性就是一个模板成员
  在Repeater中的ItemTemplate属性上,使用了下述标签
  [TemplateContainerAttribut(typeof(RepeaterItem))]
    说明通过模板创建的子控件会被包装在类型为RepeaterItem的控件之中,
    还可以通过Container.DataItem来获取当前绑定的数据

  DataBinder.Eval(Object container,string expression,string format);
    expression 属性,可以是属性对象的属性,必须为public
    format 相当于执行了string.Format操作

  Page.Eval(string expression,string format)
  方法定义如下
  protected internal string Eval(string expression,string format)
  {
    CheckPageExists();
    return DataBinder.Eval(Page.GetDataItem(),expression,format);
  }

    可以看到Eval调用的还是DataBinder.eval只是访问的对象不同了而已

  DataSource

    public virtual Object DataSource{get;set;}
      需要显示调用DataBind()方法来绑定数据
      然后就会触发两个事件
        1.ItemCreated
          表示项已经被创建了,可以访问到其中的控件了
        2.ItemDataBound
          表示绑定表达式已经被计算了

      那我们可以在哪里访问到绑定后的值?
        1.Controls 生成的所有的控件
        2.Items 仅仅只是RepeaterItem对象

  回发

    将从视图状态中重新构建原来的对象,只是触发ItemCreated事件,并不触发ItemDataBound事件
    那如果我们点击了模板中的按钮怎么搞?
      这个时候就会触发按钮的Click事件了,然后按钮的事件通过事件冒泡传递到了夫控件的事件中
        那这个时间就是ItemCommand事件
      可是又有一个问题来了,那就是一个模板不可能就只有一个按钮啊,为了解决这个问题,在Button
        中有两个属性CommandName,CommandArgument
        这样子我们就可以在ItemCommand事件中通过CommandName属性来进行判断了

    DataList和Repeter的不同
      Repeater 中没有对应的增删改查事件,需要自己在ItemCommand事件中根据事件属性来判断,所有也不可以修改数据
      DataList 是所有控件中唯一支持分栏的控件,分栏通过下面的三个属性进行控制
        RepeatColumns 分栏数
        RepeatDirection 分栏的方向
        RepeatLayout 布局方向

    GridView 它的目的就是用来生成表格,它把项目分成了很多列,每个列都可以单独定义针对此列的模板所有的模板构成了GridView的Columns集合
      GridView的模板有 5种类型,派生自DataControlField这个抽象基类
        TemplateField
        ImageField
        BoundField
        ButtonFieldBase
        HyperLinkField
      使用BindingDirection.TwoWay 表示支持双向绑定并实现了接口IBindableTemplate
      定义
      public interface IBindableTemplate:ITemplate
      {
          IOrderdDictionary ExtractValues(Control container);//获取双向绑定的值,以名值对的字典形式提供
          void InstantiateIn(Control container);
      }
      同时GridView还支持分页,主要的属性如下
        AllowPaging 是否启用分页
        PageIndex 当前页数
        PageCount
        PageSize 每页显示数据量,默认为10
      还可以通过设置PagerSettings-Mode来改变分页按钮的显示
        NextPrevious
        NextPreviousFirstLast
        Numeric
        NumericFirstLast
        FirstPageText
        PreviousPageText
        NextPageText
        LastPageText
      事件
        PagerTemplate
        PagerSettings
        PageIndexChanging
        PageIndexChanged
      同时还支持排序,可以通过下面的属性/方法来操作
        AllowSorting 是否支持排序
        SortExpression
        Sorting
        Sorted
   ListView和DataPager 很强悍的组合

对象数据源ObjectDataSource派生自DataSourceControl对象类型
  为了方便通过反射来找到对应的方法,我们使用业务对象的标签,
  ComponentModel
  用来将每一类型标识为适合绑定到ObjectDataSource对象的对象
  DataObjectMethodAttribute
  有5种枚举类型的操作
  例如
  [System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,true)]
  public void Select()
  {
    dosomthing...........
  }

时间: 2024-12-27 22:23:10

模板与数据绑定的相关文章

MVC与vue2概要、模板、数据绑定与综合示例(一)

一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.Vue是框架而jQuery则是库. 1.2.AMD与CMD 在传统的非模块化JavaScript开发中有许多问题:命名冲突.文件依赖.跨环境共享模块.性能优化.职责单一.模块的版本管理.jQuery等前端库层出不穷,前端代码日益膨胀 AMD规范及其代表:RequireJS异步模块定义(Asynchronous Module Definition),它是依

双向数据绑定---AngularJS的基本原理学习

Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS非常小,仅仅有60K,兼容主流浏览器.与 jQuery 配合良好.双向数据绑定可能是AngularJS最酷最有用的特性,将MVC的原理展现地淋漓尽致. AngularJS的工作原理是:HTML模板将会被浏览器解析到DOM中, DOM结构成为AngularJS编译器的输入. AngularJS将会遍历D

前端必备,十大热门的 JavaScript 框架和库

JavaScript 框架和库可以说是开源项目中最庞大也是最累的类目了,目前在github 上这一类的项目是最多的,并且几乎每隔一段时间就会出现一个新的项目席卷网络社区,虽然这样推动了创新的发展,但不得不说苦了前端的开发者们.因此本文罗列出了一些优秀的 Javascript 框架和库的特及其在 github 上的 star 数,旨在为各位开发者提供一些参考. 1.ReactJS (Star: 59989  ,Fork: 10992) 主页:https://facebook.github.io/r

WebForm Response和Request以及Cookie

Session:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cookies一样, 内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.当用户请求来

Repeater控件 ---属性(ItemCommand事件)

epeater的Command操作:1.ItemCommand事件 - 在Repeater中所有能触发事件的控件,都会来触发这一个事件 2.CommandName - 判断点击的是什么按钮,e.CommandName 3.CommandArgument - 触发事件所传递过来的主键值数据,放在这里面界面值绑定时要用 单引号 !!!!!! e.... 4.ItemCreated - 项模板中将HTML代码生成完毕时执行一遍此事件5.ItemDataBound - 项模板将数据绑定后执行一遍此事件

初识angular.js之爱恨情仇

angular.js Angular.JS 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS很小,只有60K,兼容主流浏览器,与 jQuery 配合良好. 简单概括:MV*模型的js框架 angular.js之爱恨情仇 爱恋之际 MV*模式 职责清晰.层次分明,例如页面样式变化仅改变View代码,其它层次结构代码无需改动. 数据绑定 数据视图绑定(单.双向数据绑定),无需反锁的改变DOM的值或修

2017最好的JavaScript框架、库和工具 — SitePoint

与开发者数量相比,可能有更多的JavaScript框架.库和工具.截止到2017年5月,在GitHub上快速搜索能搜到超过110万的JavaScript项目. 在npmjs上有50万的可用包,并且这些包每个月的下载量将近100亿次. 2017.05.29: 更新了本文,旨在能正确的描述当前JavaScript生态的状态. 本文着重讲述目前最流行的客户端JavaScript框架.库和工具之间的基本差异和他们的基本介绍.至于是不是你要寻找的最佳实践那是另外一个问题.你可以选择一个,并坚持使用一段时间

WebForm Repeater的事件、后天数据展示--2017年1月8日

Repeater的Command操作 1.ItemCommand事件 :在Repeater中所有能触发事件的控件,都会来触发这一个事件 CommandName : 判断点击的是什么按钮,e.CommandName CommandArgument : 触发事件所传递过来的数据e.CommandArgument  2.ItemCreated :项模板中将HTML代码生成完毕时执行一遍此事件 ,即创建项时触发 3.ItemDataBound :项模板将数据绑定后执行一遍此事件 后台遍历展示数据 for

前端MVC学习总结——AngularJS验证、过滤器

前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令(directive) 3.1.支持AngularJS功能的指令 3.1.1.应用与模块(ng-app) 3.1.2.控制器(ng-Controller) 3.1.3.包含(ng-Include) 3.1.4.不绑定(ngNonBindable) 3.2.扩展表单元素的指令 3.2.1.ng-opti