8.3 技术解惑
8.3.1 GridView控件的优缺点分析
GridView控件的主要优点是支持删除、编辑、排序、分页、外观设置、自定义显示数据。缺点是影响程序性能、不支持插入操作。GridView控件可以以表格形式(Table标签)显示、编辑和删除多种不同的数据源(如数据库、XML文件以及集合等)中的数据。GridView控件功能非常强大,编程者甚至可以不用编写任何代码,通过Visual Studio 2012的属性面板进行相应属性设置,即可完成如分页、排序、外观设置等功能。虽然该控件的功能非常齐全,但程序性能将受到影响,因此建议在页面中不要过多地使用该控件。当然,如果需要自定义格式显示各种数据,GridView控件也提供了用于编辑格式的模板功能,但是不支持数据的插入。
8.3.2 ListView控件的优缺点分析
ListView控件的主要优点是提供了增、删、改、排序、分页等功能,还可以支持用户自定义模板。缺点是影响程序性能、大数据分页效率低。ListView控件会按照编程者编写的模板格式显示数据。与DataList和Repeater控件相似,ListView控件也适用于任何具有重复结构的数据。不过,ListView控件不仅提供了用户编辑、插入和删除数据等数据操作功能,还提供了对数据进行排序和分页的功能,只需在Visual Studio 2012中直接设置即可,不需要编写代码,这点非常类似于GridView控件。可以说,ListView控件既有Repeater控件的开放式模板,又具有GridView控件的编辑特性。ListView控件是ASP.NET 3.5新增的控件,其分页功能需要配合DataPager控件实现。但是对于大量数据来说其分页的效率是很低下的,所以在下一节,笔者会带领大家做一个高效的分页。总地来说,ListView是目前为止功能最齐全、最好用的数据绑定控件。
8.3.3 GridView控件与DataGrid控件的对比
GridView控件是DataGrid控件的后继控件。与DataGrid控件相似,GridView控件在HTML表中显示数据。当绑定到数据源时,DataGrid和GridView控件分别将DataSource中的一行显示为输出表中的一行。DataGrid和GridView控件都是从WebControl类派生的。虽然GridView控件与DataGrid控件具有类似的对象模型,但与DataGrid控件相比,前者还具有许多新功能和优势,包括更丰富的设计时功能。
当使用DataGrid控件时,数据的排序、分页和编辑需要附加的编码。GridView控件则无需编写任何代码即可添加排序、分页和编辑功能。实际上,可以通过在控件上设置属性来自动完成这些任务(以及诸如到数据源的数据绑定等其他常见任务)。在设计器(如Microsoft Visual Studio)中工作时,可以利用内置在GridView控件中的设计器功能。GridView控件提供了对智能标记面板的支持,这种面板为执行常见任务(如设置属性和启动模板编辑)提供了方便的界面。
通常,将DataSet控件、DbDataReader控件或集合(如Array、ArrayList或System.Collections命名空间中的其他一些类)分配给DataGrid控件或GridView控件的DataSource属性。DataGrid控件和GridView控件可以绑定任何实现IEnumerable或IListSource接口的对象。DataGrid控件可以以声明方式绑定DataSourceControl控件,但这只适用于数据选择,必须手动编码才能实现排序、分页、更新和删除。GridView控件支持DataSourceID属性,因为该属性接受任何实现IdataSource的接口。所以可以利用数据源控件中的排序、分页、更新和删除功能。
另外,DataGrid与GridView控件具有不同的事件模型。DataGrid控件引发操作的单个事件,而GridView控件能够引发操作前和操作后的事件。GridView控件支持在对字段排序时发生的Sorting事件。注意:此排序事件发生在GridView控件自动处理排序操作之前,这样用户将有机会检查或更改SortExpression属性,或通过在传递的事件参数上将Cancel属性设置为True来取消此操作。