• Repeater一般只用来展示数据,如果要增删改则用ListView更方便,使用向导(强类型数据)来使用ListView会自动生成很多模板,免去手写模板代码的麻烦,再进行手工调整即可。
  • 首先设定数据源,然后点击智能提示中的“配置ListView”,选择一种布局和样式,然后根据需要勾选“启用编辑”、"启用删除”、“启用插入”、“启用分页”,就会自动生成常用的模板,注意,这只是提高效率的一个方式并不 是唯一选择。
  • LayoutTemplate为布局模板,布局模板中必须有一个ID为itemPlaceholder的服务端控件(4.0后不需要).什么类型无所谓,不会被显示,itemPlaceholder前面就是相当于Repeater中的HeaderTemplater,itemPlaceholder后面就是相当于Repeater中的FooterTemplate,因此ListView中没有这两个模板。
  • itemTemplate是每一项的模板,AlternatingItemTemplate是隔行显示的模板,和Repeater一样,EmptyDataTemplate为数据源没有数据的时候显示的内容,这样的话可以实现“没有查找结果”等信息。InsertItemTemplate为插入数据界面的模板,EditItemTemplate为编辑数据的模板,SelectedItemTemplate为标记为Selected的行的模板。
  • EditItemTemplate、InsertItemTemplate中的控件的绑定表达式为Text='<%#Bind("Age")%>',因为Eval只是计算表达的值输出,而Bind不仅可以计算表达式的值输出,还可以将用户填入的值更新到数据库中,因此Eval是单向绑定,Bind是双向绑定的。
  • 通过每行的Insert、Delete、Edit、Cancel等Command进行增删改,这几个CommandName被ListView内部处理,不需要开发人员处理,因此自定义的CommandName不要和他们重复。ListView中可以像Repeater那样为行增加Command按钮,处理方法和Repeater一样,ListView也支持Repeater那样的ItemDataBound事件。
  • ListView中可以使用Validator,只要将Validator放入相应的模板中,将Validator手动设为要验证的控件的Id,然后设定相应按钮、控件、Validator为同样的ValidationGroup,防止不同模板中的Validator互相干扰。将Cancel按钮的CausesValidation="false"即不触发验证事件。
  • 在ItemDataBound事件中,判断数据行的类型是e.Item.ItemType=ListViewItemType.DataItem. 取得行对应的DataRowView: ListViewDataItem lvDataItem=(ListViewDataItem)e.item; DataRowView rowview=(DataRowView)lvDataItem.DataItem; 在FindControl的时候注意AlternatingItemTemplate的问题。
  • 新增数据行的默认值:响应ListView的ItemCreated事件,当e.Item.ItemType为InsertItem的时候通过FindControl找到控件然后初化控件的值即可。
  • ObjectDataSource绑定Id为Guid类型的表的时候会生成一个"DataObjectTypeName="System.Guid"",这是C#的bug,删掉就可以了。
  • 插入数据的初始化:注意和“新增数据行”不同,“插入数据的初始化”是在用户点击“插入按钮”之后执行。比如主键为Guid,则需要在数据插入数据库之前为主赋值。响应ListView的ItemInserting事件,e.Values为所有字段的键值对,可以读取插入的值,也可以向字段中写值,这样就可以为id赋值如:e.Values["Id"]=Guid.NewGuid().在这个事件中对数据进行检验,也可以通过e.Cancel=True来取消非法数据插入。
  • 更新之前的处理:就像数据插入前可以在ItemInserting事件中处理一样,也可以在ItemUpdating事件中对更新过程进行处理,e.ItemIndex可以取到当前更新行的行号,e.OldValues可以取到更新前的值,e.NewValues可以取到更新后的值,可以通过e.Cancel=true来取消非法数据插入。

6.ListView的更多相关文章

  1. 张高兴的 UWP 开发笔记:横向 ListView

    ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...

  2. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  3. Android—ListView条目背景为图片时,条目间距问题解决

    ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:

  4. Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...

  5. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  6. Android listview和gridview以及view的区别

    GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...

  7. mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context

    需求:为Listview的Item里面的按钮Button添加一个事件,单击按钮时通过事件传值并跳转到新的页面. 环境:mono 效果: 布局代码 主布局 <?xml version=" ...

  8. 【腾讯Bugly干货分享】跨平台 ListView 性能优化

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...

  9. android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

    第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\Dig ...

  10. 父ListView嵌套子ListView时点击事件没有响应

    转发请备注出处:http://www.cnblogs.com/LT5505/p/5972999.html 问题: 在ListView中嵌套ListView之后,子ListView会把父ListView ...

随机推荐

  1. 常见的浏览器Hack技巧总结(转)

    如果你经常需要做前端页面,那么你一定多多少少需要解决页面的浏览器兼容问题.而浏览器兼容问题大部分也集中在对IE系列的兼容.这里就总结一下对IE系列的CSS Hack,记录一下,方便以后查阅. IE H ...

  2. UML进行Linux内核调试

    http://www.lenky.info/ http://blog.csdn.net/ztz0223/article/details/7874759 http://user-mode-linux.s ...

  3. Android 布局

    转自:http://www.cnblogs.com/chiao/archive/2011/08/24/2152435.html Android布局是应用界面开发的重要一环,在Android中,共有五种 ...

  4. Java多线程——其他工具类CyclicBarrier、CountDownLatch和Exchange

    CyclicBarrier 适用于:创建一组任务,它们并行地执行任务,然后在进行下一个步骤之前等待,直至所有任务完成.它使得所有的并行任务都将在栅栏处列队,因此可以一致地向前移动. 表示大家彼此等待, ...

  5. Java批量文件打包下载zip

    网上看了很多,本文使用ant.jar中的org.apache.tools.zip,页面用js表单提交 代码供参考: ACTION: /* * 另存为 */ @RequestMapping(" ...

  6. C#开发基于Http的LaTeX数学公式转换器

    本文将讲解如何通过codecogs.com和Google.com提供的API接口来将LaTeX数学函数表达式转化为图片形式.具体思路如下: (1)通过TextBox获取用户输入的LaTeX数学表达式, ...

  7. iOS 从网络获取son并解析

    NSString* GXURL = PURL; GXURL = [GXURL stringByAppendingString:@"/index.php/Api/android_getRank ...

  8. 使用OC开发phonegp 组件

    使用OC开发phonegp 组件 1. 使用oc 对phonegp中的组件近些开发,首先具体的pgonegp跟nativecode之间的一些优劣就不说了,开发phonegp 对应的组件主要就是使用na ...

  9. 【POJ2185】【KMP + HASH】Milking Grid

    Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that ...

  10. this详解:JAVASCRIPT中的this到底是谁?

    语法 this 全局对象 在全局执行上下文(函数之外),this引用的是全局对象. console.log(this.document === document); // true // In web ...