ASP.NET 2.0中的数据操作之九:跨页面的主/从报表(3)

  在设计视图中绑定FormView到ObjectDataSource时, Visual Studio 将会自动的创建FormView的ItemTemplate, InsertItemTemplate 和 EditItemTemplate 三个模板, 这些模板使用Label和TextBox Web控件来呈现从ObjectDataSource返回的数据. 因为我们只需要显示供应商信息, 可以移除InsertItemTemplate 和 EditItemTemplat模板. 然后,编辑ItemTemplate模板,使它在标签中显示供应商的公司名称, 在公司名称下面显示地址,城市,国家和电话号码. 另外你也可以手工设置 FormView的 DataSourceID和创建ItemTemplate的标记. 就像我们在后面”使用ObjectDataSource显示数据”一篇中的所作的那样.

修改后,Formview的标记看起来应该是这样:

<asp:FormView runat="server" DataKeyNames="SupplierID" DataSourceID="suppliersDataSource" EnableViewState="False"> <ItemTemplate> <h3><%# Eval("CompanyName") %></h3> <p> <asp:Label runat="server" Text='<%# Bind("Address") %>'></asp:Label><br /> <asp:Label runat="server" Text='<%# Bind("City") %>'></asp:Label>, <asp:Label runat="server" Text='<%# Bind("Country") %>'></asp:Label><br /> Phone: <asp:Label runat="server" Text='<%# Bind("Phone") %>'></asp:Label> </p> </ItemTemplate> </asp:FormView>

图16显示了包含了供应商信息后的ProductsForSupplierDetails.aspx页面截屏.

/uploads/allimg/200612/1P125YS_0.png

图16: 包含供应商概括信息的产品列表

为ProductsForSupplierDetails.aspx 用户界面应用些小技巧.

  要改善该报表的用户体验, 应该给ProductsForSupplierDetails.aspx页面添加点东西. 现在用户从ProductsForSupplierDetails.aspx回到供应商列表页面的唯一方法是单击浏览器的后退按钮. 让我们给ProductsForSupplierDetails.aspx增加一个HyperLink控件, 该控件指向SupplierListMaster.aspx, 这样就给用户提供了另外一个回到供应商列表的方法.

/uploads/allimg/200612/1P12C354_0.png

图17: 增加一个HyperLink 控件让用户可以回到SupplierListMaster.aspx

  如果用户单击了某个供应商的”查看产品”链接,而该供应商又没有任何产品, ProductsForSupplierDetails.aspx 上的ProductsBySupplierDataSource ObjectDataSource将不会返回任何结果. 绑定到ObjectDataSource的GridView不会呈现任何标记, 在用户的浏览器中显示为空白. 要明确的告诉用户没有与选定供应商关联的产品,我们可以设置GridView的EmptyDataText属性为当出现这种情况是我们想要显示的消息. 我们把它设置为:” 没有这个供应商的产品…”;

  默认情况下, Northwinds数据库中所有的供应商提供了至少一个产品. 但是, 在本篇教程中我已经手工修改了产品表, 这样供应商Escargots Nouveaux不再关联任何产品. 图18显示了修改后的供应商Escargots Nouveaux的详细页面.

/uploads/allimg/200612/1P12C223_0.png

图18: 提示用户该供应商没有提供任何产品.

总结

  主/从报表可以在一个页面上同时显示主记录和明细记录,在很多的网站上, 主/从记录也被分开显示在两个页面上. 在这篇教程中我们看到了如何实现这种报表, 该报表在主页面上用GridView显示供应商列表, 在明细页显示关联的产品列表. 主页面上的每个供应商都包含一个指定明细页面的链接, 并传递 SupplierID值. 这样的特定行的链接使用GridView的HyperLinkField可以很容易实现.

  明细页中获取指定供应商的产品是通过调用ProductsBLL类的GetProductsBySupplierID(supplierID)方法实现的. supplierID参数值由查询字符串中指定. 我们同样也看到了如何在明细页中使用FormView显示供应商详细信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwzyw.html