导言:
在前一章62,《GridView批量更新数据》中,我们在GridView控件中定制了一个批量编辑界面,我们还可以定制一个批量添加界面。假设这种情况,我们接受一批从东京(Tokyo)发来的商品:6种不同的茶和咖啡。如果用户在DetailsView控件中一次输入一个产品,他将重复输入许多相同的值,例如相同的类别(饮料)、相同的供应商(东京贸易商)、相同的停产值(假)和相同的订单值(0)。反复输入这些相同的值不仅很累,而且容易出错。我们只需要做一些额外的工作就可以创建一个批量添加界面。用户只需选择供应商和类别一次,输入一系列产品的名称和单价,然后点击一个按钮,将这些新产品添加到数据库中(如图1所示)。这些新增产品的ProductName和UnitPrice数据由界面顶部的两个DropDownList控件指定,Discontinued和UnitsOnOrder的值由“硬编辑”指定,分别为false和0。
图1:批量添加界面。
在本教程中,我们将创建一个批处理添加界面,如图1所示。在前两章的基础上,我们将使用事务封装添加过程,以确保原子操作。我们开始吧!
第一步:创建显示界面。
我们将创建一个包含两个区域的单个页面:显示区域和添加区域。在这一步中,我们将创建一个显示区域,其中包含一个用于显示产品的GridView控件和一个标题为“处理产品装运”的按钮。当点击这个按钮时,显示界面将被一个添加界面取代,如图1所示。如果您单击“从装运中添加产品”或“取消”,您将返回显示页面。添加界面将在第二步中完成。
这个有2个界面的页面一次只能显示一个界面。我们将使用两个Panel Web控件作为容器来包含这两个接口。
在BatchData文件夹中打开BatchInsert.aspx页面,在设计器模式下将一个Panel控件从工具箱拖动到页面中(如图2所示),并将其ID设置为DisplayInterface。将Panel控件拖到页面时,其“高度”和“宽度”属性分别为50px和125px。在属性窗口中清除这些属性。
图2:将面板控件从工具箱拖到页面。
然后将按钮和网格视图控件拖到面板控件中。将按钮的标识设置为流程装运,将文本属性设置为“流程产品装运”,将网格视图的标识设置为产品网格。从智能标记将其绑定到名为产品数据源的对象数据源。设置ObjectDataSource来调用ProductsBLL类的GetProducts方法。由于GridView控件仅用于显示数据,请从“更新”、“插入”、“删除”标签中选择“(无)”。单击“完成”完成设置。
图3:调用ProductsBLL类的GetProducts方法来显示数据。
图4:在更新、插入、删除标签中选择“(无)”。
设置对象数据源后,Visual Studio将自动添加一些边界字段和一个复选框字段。仅保留productname、categoryname、suppliername、UnitPrice和停产的列。你可以在外观上做一些改进。我将unitprice列自定义为货币值,对列进行了重新排序,并修改了一些列的HeaderText值。然后,在GridView的智能标记中启用了“分页”和“排序”功能。完成以上工作后,页面的申报代码应该是这样的。
asp3360 panel ID=' display interface ' runat=' server ' p asp: button ID=' Process shipping ' runat=' server ' Text=' Process Product shipping '/p asp: GridView ID=' products grid ' runat