无论功能上还是使用方法上,FormView与DetailsView都非常的类似,FormView控件使你同样可以使用数据源的单个记录。它也用于更新和插入新纪录,并且通常在详细方案中使用,在这些方案中,主控件的选中记录决定要在FormView控件中显示的记录。
FormView和DetailsView控件的区别在于,DetailsView控件使用表格布局,在该布局中,记录的每个字段都各自显示为一行,而FormView控件不指定用于显示记录的预定义布局,它在显示上比DetailsView控件具有更大的灵活性。实际上,将创建一个包含控件的模板,以显示记录中的各个字段,该模板中可以包含用于创建窗体的格式、控件和绑定表达式等。
可以用于通过创建模板来为FormView控件生成用户界面,为不同操作指定不同的模板。
FormView常用的模板
如下代码所示
<form id="form1" runat="server">
<div>
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<b>
<%# Eval("Id") %>
<%# Eval("Title") %>
</b>
<hr />
<small>
<li><%# Eval("PublishDate") %></li>
<li><%# Eval("UnitPrice") %></li>
<li><%# Eval("CategoryId") %></li>
</small>
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:con %>" runat="server" SelectCommand="Select * from Books"></asp:SqlDataSource>
</div>
</form>
运行结果:
与DetailsView一样,FormView也提供了许多内置功能,这些功能使我们可以对控件中的项进行更新、删除、插入和分页。FormView控件绑定到数据源控件时,FormView控件可以利用该数据源控件的功能并提供自动更新、删除、插入和分页功能。
值得注意的是FormView使用的是模板,所以该控件不提供自动生成命令按钮以执行更新、删除插入等方法,因此我们需要自己动手将这些命令包含在合适的模板中,FormView控件识别CommandName属性,下面列出了可以识别的命令按钮