FormView 控件用于显示数据源中的单个记录。该控件与 DetailsView 控件类似,只是它显示用户定义的模板而不是行字段。创建您自己的模板使您可以更灵活地控制数据的显示方式。FormView 控件支持以下功能:
模板
要使 FormView 控件显示内容,需要为该控件的不同部分创建模板。大多数模板是可选的;但是,必须为该控件的配置模式创建模板。例如,必须为支持插入记录的 FormView 控件定义插入项模板。下表列出了可以创建的不同模板。
若要在项模板中显示字段的值,请使用数据绑定表达式。有关数据绑定表达式的更多信息,请参见 数据绑定表达式语法。
使用双向绑定表达式可以将编辑项模板和插入项模板中的输入控件绑定到数据源的字段。这使得 FormView 控件可以自动提取输入控件的值以进行更新或插入操作。使用双向绑定表达式还可以使编辑项模板中的输入控件自动显示原始字段值。有关双向绑定表达式的更多信息,请参见 绑定到数据库。
绑定到数据
数据操作
FormView 控件提供许多内置功能,这些功能使用户可以对控件中的项进行更新、删除、插入和分页。FormView 控件绑定到数据源控件时,FormView 控件可以利用该数据源控件的功能并提供自动更新、删除、插入和分页功能。
注意 |
|---|
| FormView 控件可以为用其他类型的数据源进行更新、删除、插入和分页操作提供支持;但是,您必须提供一个适当的事件处理程序,其中包含对这些操作的实现。 |
因为 FormView 控件使用模板,所以该控件不提供自动生成命令按钮以执行更新、删除或插入操作的方法。必须手动将这些命令按钮包含在适当的模板中。FormView 控件识别某些 CommandName 属性设置为特定值的按钮。下表列出了 FormView 控件识别的命令按钮。
| 按钮 | Commandname 值 | 说明 |
| 取消 | “Cancel” | 在更新或插入操作中用于取消操作和放弃用户输入的值。然后 FormView 控件返回到 DefaultMode 属性指定的模式。 |
| 删除 | “Delete” | 在删除操作中用于从数据源中删除显示的记录。引发 ItemDeleting 和 ItemDeleted 事件。 |
| 编辑 | “Edit” | 在更新操作中用于使 FormView 控件处于编辑模式。在 EditItemTemplate 属性中指定的内容是为数据行显示的。 |
| 插入 | “Insert” | 在插入操作中用于尝试使用用户提供的值在数据源中插入新记录。引发 ItemInserting 和 ItemInserted 事件。 |
| 新建 | “New” | 在插入操作中用于使 FormView 控件处于插入模式。在 InsertItemTemplate 属性中指定的内容是为数据行显示的。 |
| 页 | “Page” | 在分页操作中用于表示页导航行中执行分页的按钮。若要指定分页操作,请将该按钮的 CommandArgument 属性设置为“Next”、“Prev”、“First”、“Last”或要导航至的目标页的索引。引发 PageIndexChanging 和 PageIndexChanged 事件。 注意 |
|---|
| 此类型的按钮通常只在页导航模板中使用。 |
|
| 更新 | “Update” | 在更新操作中用于尝试使用用户提供的值更新数据源中所显示的记录。引发 ItemUpdating 和 ItemUpdated 事件。 |
与“删除”按钮(该按钮立即删除所显示的记录)不同,单击“编辑”或“新建”按钮时,FormView 控件分别进入编辑模式或插入模式。在编辑模式中,EditItemTemplate 属性中包含的内容是为当前数据项而显示的。通常,编辑项模板被定义为用一个“更新”按钮和一个“取消”按钮替代“编辑”按钮。适合于字段的数据类型的输入控件(如 TextBox 或 CheckBox 控件)也通常与字段的值一起显示以便用户进行修改。单击“更新”按钮更新数据源中的记录,而单击“取消”按钮则放弃所有更改。
同样,当控件处于插入模式时,InsertItemTemplate 属性中包含的内容是为数据项而显示的。插入项模板通常定义为用一个“插入”按钮和一个“取消”按钮替代“新建”按钮,并显示空的输入控件以便用户输入新记录的值。单击“插入”按钮在数据源中插入记录,单击“取消”按钮放弃所有更改。
FormView 控件提供分页功能,该功能使用户可以导航至数据源中的其他记录。启用时,页导航行显示在包含页导航控件的 FormView 控件中。若要启用分页,请将 AllowPaging 属性设置为 true。您可以通过设置 PagerStyle 和 PagerSettings 属性中所包含的对象的属性自定义页导航行。可以不使用内置页导航行 UI,而使用 PagerTemplate 属性创建您自己的 UI。
自定义用户界面
您可以通过设置 FormView 控件的不同部分的样式属性自定义该控件的外观。下表列出了不同的样式属性。
事件
FormView 控件提供多个您可以对其进行编程的事件。这使您可以在每次发生事件时都运行一个自定义例程。下表列出了 FormView 控件支持的事件。
| 事件 | 说明 |
| ItemCommand | 在单击 FormView 控件中的按钮时发生。此事件通常用于在控件中单击按钮时执行某项任务。 |
| ItemCreated | 在 FormView 控件中创建了所有 FormViewRow 对象之后发生。此事件通常用于在显示记录前修改该记录的值。 |
| ItemDeleted | 在单击“删除”按钮(CommandName 属性设置为“Delete”的按钮)时,但在 FormView 控件从数据源中删除该记录之后发生。此事件通常用于检查删除操作的结果。 |
| ItemDeleting | 在单击“删除”按钮时,但在 FormView 控件从数据源中删除该记录之前发生。此事件通常用于取消删除操作。 |
| ItemInserted | 在单击“插入”按钮(CommandName 属性设置为“Insert”的按钮)时,但在 FormView 控件插入记录之后发生。此事件通常用于检查插入操作的结果。 |
| ItemInserting | 在单击“插入”按钮时,但在 FormView 控件插入记录之前发生。此事件通常用于取消插入操作。 |
| ItemUpdated | 在单击“更新”按钮(CommandName 属性设置为“Update”的按钮)时,但在 FormView 控件更新行之后发生。此事件通常用于检查更新操作的结果。 |
| ItemUpdating | 在单击“更新”按钮时,但在 FormView 控件更新记录之前发生。此事件通常用于取消更新操作。 |
| ModeChanged | 在 FormView 控件更改模式(更改为编辑、插入或只读模式)之后发生。此事件通常用于在 FormView 控件更改模式时执行某项任务。 |
| ModeChanging | 在 FormView 控件更改模式(更改为编辑、插入或只读模式)之前发生。此事件通常用于取消模式更改。 |
| PageIndexChanged | 在单击某一页导航按钮时,但在 FormView 控件处理分页操作之后发生。当您在用户定位到控件中不同的记录后需要执行任务时,通常使用此事件。 |
| PageIndexChanging | 在单击某一页导航按钮时,但在 FormView 控件处理分页操作之前发生。此事件通常用于取消分页操作。 |
辅助功能
默认情况下,为此控件呈现的标记可能不符合辅助功能标准,例如 Web 内容辅助功能准则 1.0 (WCAG) 优先级 1 准则。有关此控件的辅助功能支持的详细信息,请参见 ASP.NET 控件和辅助功能。