一个可插入行的扩展 GridView






4.51/5 (12投票s)
另一个可插入的 ASP.NET GridView 控件。
引言
本文描述了(另一个)可插入的 GridView
。您可能知道 GridView
控件是 ASP.NET v.2 中用于显示和编辑表格数据的首选控件。尽管 GridView
比以前的 DataGrid
控件有所改进,但它仍然缺乏插入新行的能力。 Microsoft 表示您可以使用 FormView
或 DetailsView
组件来插入新行。但是,通常在适当的位置添加新行会很方便。我提供的修改后的 Web 服务器 GridView
控件通过在页脚行中添加“加号”图像使这成为可能。按下时,会将具有默认值的新行添加到数据库,并且网格在最后一页的底部以编辑模式显示新行(参见下图)。如果按下“取消”按钮,则会从数据库中删除新行。编辑新行后,将恢复 GridView
的排序。
除了插入功能外,代码还会自动在网格的第一列中为选择、编辑和删除操作添加按钮图像。
使用代码
修改后的控件被实现为继承 GridView
控件的自定义服务器控件。要使用它,请添加对 *PSControls.dll* 文件或 *PSControls* 项目的引用。如果您使用该项目,您可以进一步自定义控件,还可以通过创建 *Messages.XX.resx* (其中 *XX* 是您的语言)来本地化控件消息。
然后,在您的 *.aspx* 窗体上放置一个 PSGridView
控件,并使用智能标签菜单对其进行配置。第一个字段(列)必须是一个空的 TemplateField
,因为代码会在那里创建添加、选择、编辑、删除、更新和取消按钮。下面显示了使用 Visual Studio 2005 配置字段的示例
您可以通过分别设置控件的布尔值 CanAdd
、CanSelect
、CanEdit
和 CanDelete
自定义属性来确定是否创建添加、选择、编辑和删除按钮。此外,您可以通过将 IsEditable
属性设置为 False
来禁用所有编辑按钮。默认情况下,所有这些属性都设置为 True
。
按下“添加”按钮时,该控件会将新行添加到数据库。因此,如果您要插入的表具有“not null”列,则会引发异常,除非您在数据源控件的 Inserting
事件中为这些列设置默认值。下面是一个示例
Protected Sub sqlCustomers_Inserting(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) _
Handles sqlCustomers.Inserting
e.Command.Parameters("@CustomerType").Value = "S"
End Sub
要使图像像示例中一样显示,请将演示的 *images* 文件夹复制到您的 Web 应用程序的根目录。或者,通过 AddImageUrl
、EditImageUrl
、DelImageUrl
、SelImageUrl
、UpdateImageUrl
和 CancelImageUrl
属性指定您自己的图像。
更新:在最初发布后,我意识到只有在新行的主键始终递增的情况下,插入功能才能正常工作。这可以通过定义一个自增主键列来轻松实现,例如, ID int NOT NULL IDENTITY(1,1) PRIMARY KEY, ...
。此外,您必须创建一个空模板,以便在表没有行时显示加号图标。您可以使用 Visual Studio 完成此操作,也可以通过将 <EmptyDataTemplate></EmptyDataTemplate>
标签插入到控件声明中。
历史
- 1.0 版 - 基本的可插入行功能。编辑控件。
- 1.01 版 - 更新,以便在
PreRender
事件处理程序上更改CanXXX
属性后对控件生效。