ASP.NET 2.0数据教程之六十四:批更新数据

返回“ASP.NET 2.0数据教程目录”

导言:

在前面的教程,我们对数据访问层进行扩展以支持数据库事务. 数据库事务确保一系列的操作要么都成功,要么都失败。本文我们将注意力转到 创建一个批更新数据界面.

在本文,我们将创建一个GridView控件,里面 的每一行记录都可以进行编辑(见图1),因此我们没有必要多添加一列来包含 Edit, Update,和Cancel按钮,而是在页面包含2个“Update Products”按钮,被点击时,遍历所有的产品并对数据库进行更新.让我们 开始吧.


图1:GridView控件里的每一行记录都可以编辑

注意:在第37章 《Performing Batch Updates》里我们用一个DataList控件创建了一个批编辑界 面, 那篇文章与本文的区别之一在于本文使用GridView控件且使用了事 务.

考察设置所有GridView Rows可编辑的步骤

就像在第16章《An Overview of Inserting, Updating, and Deleting》考察的那样,GridView控件 使用内置的编辑功能编辑每一行记录。在其内部,GridView控件通过EditIndex属 性来判断哪一行可编辑. 一旦GridView绑定到数据源之后,它就逐行检查,看哪 行的index值与EditIndex的值匹配,如果找到的话,该行就呈现为编辑界面.如果 是绑定列(BoundFields),则呈现为一个TextBox,其Text值为对应的BoundField的 DataField属性的值;如果是模板列(TemplateFields),那么呈现为 EditItemTemplate而不是ItemTemplate.

我们知道当某个用户点击某行的 Edit按钮时,页面产生回传,将该行的index值为GridView控件的EditIndex属性 赋值,再重新绑定数据.当点击某行的Cancel按钮后产生页面回传,在重新绑定数 据以前,将EditIndex属性设置为-1.因为,对GridView控件的rows而言,开始时 Index值为0,而将EditIndex设为-1的话就变成只读模式了.

如果只对行进 行编辑,EditIndex属性工作正常,但不支持批编辑。要对GridView实施批编辑的 话,我们必须使每行都呈现为编辑界面.为此,最简单的方法是将要编辑的列,转 换为TemplateField,然后在ItemTemplate模板里创建编辑界面.在接下来的几步 ,我们将创建一个完整的可批编辑的GridView,在第一步,我们将创建一个 GridView及其ObjectDataSource,并将BoundFields和CheckBoxField转换为 TemplateFields。在第二步和第三步,我们将编辑界面从ItemTemplates模板转移 到EditItemTemplates.

时间: 2024-08-14 16:42:19

ASP.NET 2.0数据教程之六十四:批更新数据的相关文章

在ASP.NET 2.0中操作数据之六十四:GridView批量添加数据_自学过程

导言: 在前面的第62章<GridView批量更新数据>里,我们用GridView控件里定制了一个批编辑界面,同样的我们也可以定制一个批添加界面.假设有这种情况,我们接受一批从Tokyo(东京)发过来的货物:6种不同的tea 和 coffee,如果用户在一个DetailsView控件里一次输入一个产品,他将会重复的输入很多相同的值,比如相同的种类(Beverages),相同的供应商(Tokyo Traders),相同的discontinued值(False),以及相同的order值(0).重复

ASP.NET 2.0数据教程之六十二:创建一个用户自定义的Database-Driven Site Map

返回"ASP.NET 2.0数据教程目录" ASP.NET 2.0数据教程之六十二:创建一个用户自定义的Database-Driven Site Map Provider 导言: ASP.NET 2.0的网站地图(site map)功能允许页面开发者在一些 持久介质(persistent medium),比如一个XML文件里,自己定义一个web程序的 site map.一旦定义了之后,我们可以通过System.Web命名空间的SiteMap class 类或某个Web导航控件,比如Si

在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据_自学过程

导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控件,里面的每一行记录都可以进行编辑(见图1),因此我们没有必要多添加一列来包含Edit, Update,和Cancel按钮,而是在页面包含2个"Update Products"按钮,被点击时,遍历所有的产品并对数据库进行更新.让我们开始吧. 图1:GridView控件里的每一行记录都可以编

ASP.NET 2.0数据教程之六十九:在TableAdapter里使用JOINs

返回"ASP.NET 2.0数据教程目录" 导言: 在关系数据库里,我们处理的数据通常跨越了几个数据表.举 例:当展示产品信息时我们很可能想列出每个产品相应的category以及供应商的 名称等.诚然,Products表里包含有CategoryID 和SupplierID值,但是事实上的 category以及supplier names分别定义在Categories表和Suppliers表里. 要从其 它的相关表里获取信息,我们可以使用correlated subqueries或JOI

ASP.NET 2.0数据教程之六十八:在TableAdapters里使用现有的存储过程

返回"ASP.NET 2.0数据教程目录" 导言: 在前面的文章里我们考察了如何让TableAdapters向导自动的创 建存储过程.而在本文,我们将考察如何让TableAdapter使用现有的存储过程.由 于Northwind数据库现有的存储过程很少,我们也需要考察如何在Visual Studio 环境里手动向数据库添加新的存储过程. 注意: 在第63章 <Wrapping Database Modifications within a Transaction>里我们向

ASP.NET 2.0数据教程之六十六:批添加数据

返回"ASP.NET 2.0数据教程目录" 导言: 在前面的第64章<Batch Updating>里,我们用GridView控件 里定制了一个批编辑界面,同样的我们也可以定制一个批添加界面.假设有这种情 况,我们接受一批从Tokyo(东京)发过来的货物:6种不同的tea 和 coffee,如果 用户在一个DetailsView控件里一次输入一个产品,他将会重复的输入很多相同的 值,比如相同的种类(Beverages),相同的供应商(Tokyo Traders),相同的 d

ASP.NET 2.0数据教程之六十五:批删除数据

返回"ASP.NET 2.0数据教程目录" 导言: 在前面的教程,我们用GridView创建了一个批编辑界面.在用户需 要一次性编辑多条记录的情况下,批编辑界面很有用.同理,当用户需要同时删 除多条记录时,该技术也很有用. 如果你使用过邮件系统的话,你应该对 这种最常见的批删除界面很熟悉:界面里每一行都包含一个checkbox,此外,还 有一个"Delete All Checked Items"按钮(如图1).本教程比较短, 因为我们在前面的教程已经完成大体的框架,

ASP.NET 2.0数据教程之六十:在程序启动阶段缓存数据

返回"ASP.NET 2.0数据教程目录" 导言: 前面2章考察了在表现层和缓存层缓存数据.在第58章,我们探 讨了在表现层设置ObjectDataSource的相关cache属性来缓存数据.在第59章,我 们探讨了创建一个单独的分开的缓存层.这2章都是采用"应激装载" (reactive loading)的模式来缓存数据.该模式下,每次请求数据时,系统先 检查其是否在内存,如果没有,则从数据源--比如数据库,来获取 数据,然后将其存储在内存里.该模式的优势在于执行

ASP.NET 2.0数据教程之七十四:调试存储过程

返回"ASP.NET 2.0数据教程目录" 导言: Visual Studio有很多的调试功能.我们只需要稍稍点点鼠标, 敲敲键盘就可以使用断点(breakpoints)来打断某个程序的执行,并查看其状态. 除了调试代码以外,Visual Studio也支持对SQL Server里面的存储过程进行调试 .就像可以在ASP.NET页面的后台代码类或Business Logic Layer class类里设置 断点一样,我们也可以在存储过程里设置断点. 本文我们将考察如何在 Visual