手机版

在ASP .NET 2.0中操作数据之三十三:基于数据列表和中继器使用控件过滤的主/从报表

时间:2021-10-31 来源:互联网 编辑:宝哥软件园 浏览:

导言

在前面的使用控件过滤的主/从报表一章里我们使用显示数据表格(一种控件)创建的主/从表,显示一些'主'记录。用户可以根据主记录来查看'从(详细)的内容。主/从表在呈现一对多关系和含多列的表的信息时是一个好的选择。在前面我们已经学过如何使用显示数据表格(一种控件)和控件基础来实现。本章和后面两章我们将重新复习一下这些概念,但是主要学习使用数据列表和中继器来实现。本章我们将学习使用控件包含主记录,而在数据列表里显示从记录。

第一步: 增加主/从教程页

首先增加本教程会用到的文件夹(数据列表重复过滤)和页。新建页的时候记得选择站点.母版

默认。aspxfilterbydropdownlist。aspxcategorylistmaster。aspxpproducts sforcategorydedails。作为例外类别和产品。文件

//files.jb51.net/file_images/article/201605/2016050911481968.png

图1: 创建文件夹文件夹和页

然后打开Default.aspx页,将sectionleveltutoriallisting。文件用户控件拖进来。

//files.jb51.net/file_images/article/201605/2016050911482269.png

图2: 在Default.aspx页里增加sectionleveltutoriallisting。文件

我们需要将主/从教程添加到站点地图里。打开Web.sitemap,将下面的标记添加到"使用数据列表和中继器显示数据"节点后:

' siteMapNode title='包含数据列表和中继器的主/详细报告描述='使用数据列表和中继器控件的报告示例URL=' ~/DataList repeaterfilting/default。aspx ' siteMapNode title='按下拉列表筛选描述='使用下拉列表筛选结果URL=' ~/datalist repeaterfiling/filterbydropdownlist。aspx '/siteMapNode title='跨两页的主记录/详细记录'描述='一页上的主记录,另一页上的详细记录URL=' ~/datalist repeater filling/categorylistmaster。aspx '/siteMapNode title='一页上的Maser/Detail ' description='主记录在左列,详细信息在右列,两者在同一页上URL=' ~/datalist repeater filing/categories and products。aspx '/SiteMapNode(9502 . 163.com)

图3: 更新之后的站点地图

第二步: 在控件里显示种类

我们的主/从表将在控件里列出类别,然后将选择的项目的产品用数据列表显示出来。打开文件夹文件夹里的FilterByDropDownList.aspx页,拖一个控件进来。将控件的身份设为类别。在智能标签上选择选择数据源,创建一个名为类别数据源的对象数据源

//files.jb51.net/file_images/article/201605/2016050911482371.png

图4: 添加一个名为类别数据源的对象数据源

使用类别基地址定位连接类的GetCategories()方法配置对象数据源.然后为控件的文本和价值配置字段(分别为类别名称和CategoryID ).

//files.jb51.net/file_images/article/201605/2016050911482372.png

图5: 配置控件的文本和价值

现在控件里已经列出了种类表里记录。见图6.

//files.jb51.net/file_images/article/201605/2016050911482673.png

图6: 完成后的控件

第三步: 添加产品数据列表

下面将选择的种类关联的产品列出来。添加一个数据列表,创建一个名为产品分类数据源的对象数据源.用ProductsBLL类的getproductbycategoryid(categoryID)来配置它。因为我们的报表是只读的,所以在插入,更新和删除标签里选择没有。

//files.jb51.net/file_images/article/201605/2016050911482674.png

图7: 选择getproductbycategoryid(categoryID)方法

点下一步,向导会提示我们为分类编号参数选择来源。将参数来源设为控件,控件身份设为类别。

//files.jb51.net/file_images/article/201605/2016050911482675.png

图8: 设置分类编号参数为类别下拉列表

完成上面的配置后,Visual Studio会为数据列表自动生成一个模板列来显示每个字段的名字和价值。我们来做一些改进,只显示产品的名称、类别、供应商、数量和价格,并在每个项目之间加一个整点元素(SeoaratorTemplate).我们将使用数据列表和中继器来显示数据的模板列例子。对象数据源的标记语言应该和下面差不多:

asp:目录ID=' datalist 1 ' runat=' server ' DataKeyField=' product ID '数据源ID=' productbycategorydata source ' EnableViewState=' False '项目模板H4 asp:标签ID=' productnameplabel ' runat=' server ' Text=' % # Eval('产品名称')% '//H4表边框='0' tr td类=' productproperty label '类别3360/TD tdasp3360标签' ID='在浏览器里看一下页面。第一次访问时,和贝韦拉格关联的产品都显示出来了(图9),但是改变控件不会更新数据,这是因为还更新数据列表需要回发。我们将控件的自动提交属性设为没错。

//files.jb51.net/file_images/article/201605/2016050911483076.png

图9: 第一次访问时,显示饮料的制品

//files.jb51.net/file_images/article/201605/2016050911483077.png

图10: 选择一个新的类别(产品),更新数据列表

添加一个"-选择类别-"列表项目第一次访问页面时贝韦吉斯默认被选中,并且在数据列表里显示它的产品。在使用控件过滤的主/从报表里我们添加了"-选择一个类别——"选项(默认项),显示所有的产品。在显示数据表格(一种控件)里显示产品时这样很方便。而对数据列表而言,每个产品要占很大一块屏幕,因此在选择"-选择一个类别——"时底下将不显示产品。在控件的属性里选择项目属性,添加一个文本为"-选择类别-",值为0的项。

//files.jb51.net/file_images/article/201605/2016050911483078.png

图11: 添加"-选择一个类别——"项

你也可以直接在控件的标记语言里添加以下代码:

asp3360 dropdownlist ID=' categories ' runat=' server ' AutoPostBack=' True ' DataSourceID=' categories data source ' DataTextField=' CategoryName ' DataValueField=' CategoryID ' EnableViewState=' False ' asp3360 listitem值='0' -选择一个类别-/ASP : list item/ASP 3360 dropdownlist另外我们需要将控件的AppendDataBoundItems设为没错。因为如果为假(默认),当种类绑定到控件时将覆盖手工添加的列表项。

//files.jb51.net/file_images/article/201605/2016050911483079.png

图12:将AppendDataBoundItems属性设置为真

我们将"-选择一个类别——"的价值设为0是因为系统里没有种类的价值为0,因此当选择这条种类时不会有产品返回。浏览一下网页来确认这点。见图13.

//files.jb51.net/file_images/article/201605/2016050911483180.png

图13: 选中"-选择一个类别——"时,没有制品被显示

如果你想在选择"-选择一个类别——"时显示所有的产品,将它的价值设为1.细心的读者会记起来在使用控件过滤的主/从报表里我们更新了ProductsBLL类的getproductbycategoryid(categoryID)方法,如果分类编号为一时所有的产品记录会被返回。

总结

显示分层数据时,使用主/从表显示数据是有帮助的。用户可以从最高级别的数据开始,逐步输入最详细的数据。在本章中,我们学习了一个简单的主/从表来显示所选类别下的产品。我们使用DropDownList列出日期类别。显示产品的数据列表。在下一章中,我们将学习将主/从记录分成两页。在第一页中,显示了所有“主”记录,并且有一个链接链接到“从”信息。点击此链接,用户将看到显示详细信息的页面。

编程快乐!

作者简介

斯科特米切尔,六本关于ASP/ASP的书的作者。NET,是4GuysFromRolla.com的创始人,自1998年以来一直使用微软的网络技术。Scott是一名独立的技术顾问、培训师和作家,最近完成了一部即将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电子邮件是[emailprotected],也可以通过他的博客http://ScottOnWriting.NET联系到他。

版权声明:在ASP .NET 2.0中操作数据之三十三:基于数据列表和中继器使用控件过滤的主/从报表是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。