快速业务通道

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
its solution 。

ID为 ViewCategory的LinkButton还没有设置Text属性。如果我们只需要显示category 名字,我们可以通过绑定语法象下面这样来直接设置:

ASP.NET

<asp:LinkButton runat="server" ID="ViewCategory" Text=''<%# Eval ("CategoryName") %>'' />

然而在这里我们 需要显示的是category的name和proudct的总数。见下面的代码:

C#

protected void Categories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// Make sure we''re working with a data item...
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
// Reference the CategoriesRow instance bound to this RepeaterItem
Northwind.CategoriesRow category =
(Northwind.CategoriesRow) ((System.Data.DataRowView) e.Item.DataItem).Row;
// Determine how many products are in this category
NorthwindTableAdapters.ProductsTableAdapter productsAPI =
new NorthwindTableAdapters.ProductsTableAdapter();
int productCount =
productsAPI.GetProductsByCategoryID (category.CategoryID).Count;
// Reference the ViewCategory LinkButton and set its Text property
LinkButton ViewCategory = (LinkButton)e.Item.FindControl("ViewCategory");
ViewCategory.Text =
string.Format("{0} ({1:N0})", category.CategoryName, productCount);
}
}

我们首 先要确保我们处理的是data item(ItemType为Item或AlternatingItem)然后引用 刚刚绑定到当前RepeaterItem的CategoriesRow。然后调用 GetCategoriesByProductID(categoryID)方法,通过Count属性获取返回的记录条 数。最后将ItemTemplate里的ViewCategory LinkButton的Text属性设为 "CategoryName(NumberOfProductsInCategory)"。

注意:我们 也可以在ASP.NET页的code-behind里写一个格式化功能,接收CategoryName和 CategoryID的值,返回CategoryName和product总数的连接字符串。然后将结果直 接赋给LinkButton的Text属性,而不需要处理ItemDataBound事件。更多的格式化 功能信息参考在GridView控件中使用TemplateField 和格式化DataList和 Repeater的数据。

添加完event handler后,在浏览器里看看页面。见图4 。

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

图 4:显示每个 Category的 Name 和 Products总数

更新 CategoriesDataTable和CategoriesTableAdpter来包含每个Category的Product总 数

除了在每个category绑定到Repeater时获取product总数外,我们还可以 修改DAL里CategoriesDataTable和CategoriesTableAdapter来包含这个信息.我们 在CategoriesDataTable里加一列.打开App_Code\DAL\Northwind.xsd,右键点 DataTable,选择Add/Column.见图5.

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

图 5: 为CategoriesaDataSource增加一个新列

这样会添加一个 名为Column1的列,你可以很方便的修改它的名字.将它重命名为 NumberOfProducts.然后我们需要配置这列的属性.点这个列,来到属性窗口.将 DataType从System.String修改为System.Int32.将ReadOnly属性设为True.见图 6.

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

图 6: 设置新列的属性

现在CategoriesDataTable里已经包含了 NumberOfProducts列,但它的值还没有设置.我们可以修改GetCategories()方法, 当每次获取category信息的时候返回它的信息.在这里由于只是本章用到了这个数 据,我们来创建一个新的名为GetCategoriesAndNumberOfProducts().

右键 点CategoriesTableAdapter,选择New Query.会出现TableAdapter Query配置向导 .选择SQL statement.

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

图 7: 选择SQL Statement

ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表

图 8: SQL Statement 返回行数

下一步需要我们写sql语句.下 面

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号