ASP.NET 2.0 数据操作:DataList与Repeater实现跨页面主/从报表

0 下载量 144 浏览量 更新于2024-08-31 收藏 96KB PDF 举报
"在ASP.NET 2.0中操作数据之三十四:基于DataList和Repeater跨页面的主/从报表" 在ASP.NET 2.0中,开发Web应用程序时,展示数据的方式多种多样,其中包括使用控件如GridView、DataList和Repeater。本文主要讨论如何利用DataList和Repeater在跨页面环境中实现主/从报表的功能。这种报表通常用于显示一对多关系的数据,比如供应商(主)与产品(从),或类别(主)与产品(从)。 首先,回顾一下使用GridView实现跨页面主/从报表的方法。通常,会在一个页面上用GridView显示主记录,例如所有供应商,并在其中添加HyperLinkField,通过查询字符串(querystring)传递主记录的ID到另一个页面。在第二个页面,使用GridView展示与选定主记录相关的从记录,即该供应商的所有产品。 对于DataList和Repeater,由于它们不内置提供HyperLinkField,我们需要自定义链接逻辑。我们可以使用HyperLink控件或HTML的`<a>`标签,并设置其NavigateUrl或`href`属性,以便在点击时跳转到显示从记录的页面。 在这个示例中,我们将首先创建一个页面来显示类别列表(主)。在名为“CategoryListMaster.aspx”的文件中,添加一个Repeater控件,并通过智能标签连接到一个ObjectDataSource。ObjectDataSource配置为调用CategriesBLL类的GetCategories方法,以获取所有类别。 Repeater的模板设计应能显示每个类别的名称和描述。以下是一个简单的模板示例: ```aspx <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"> <ItemTemplate> <div> <h3><%# Eval("CategoryName") %></h3> <p><%# Eval("Description") %></p> <!-- 添加链接到显示该类别产品的页面 --> <a href="ProductListDetail.aspx?CategoryId=<%# Eval("CategoryID") %>">查看该类别产品</a> </div> </ItemTemplate> </asp:Repeater> ``` 这里的链接使用了HTML的`<a>`标签,并通过`Eval`函数从数据源中提取CategoryID,将其附加到URL作为查询字符串参数。 接下来,我们需要创建第二个页面,例如“ProductListDetail.aspx”,以显示所选类别下的产品。在这个页面上,我们将使用DataList控件。通过查询字符串获取CategoryID,然后在页面加载事件中,从数据库中获取与该类别关联的产品并绑定到DataList。 ```csharp protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int categoryId = Convert.ToInt32(Request.QueryString["CategoryId"]); var productList = new ProductsBLL().GetProductsByCategoryId(categoryId); DataList1.DataSource = productList; DataList1.DataBind(); } } ``` 在DataList1的ItemTemplate中,可以设置显示产品的名称、描述等信息。这样,我们就实现了跨页面的主/从报表,用户可以通过类别名称链接到显示该类别产品的页面。 总结,使用DataList和Repeater实现跨页面主/从报表,虽然需要手动处理链接逻辑,但提供了更高的灵活性和定制性。这种方式对于处理复杂布局或需要自定义样式和交互的场景尤为适用。通过熟练掌握这些控件的用法,开发者能够更高效地构建动态、数据驱动的ASP.NET Web应用。