返回“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.