关于控件香套的问题。 参考HOW TO:使用嵌套 Repeater 控件和 Visual C# .Net 显示分层数据

Eilien 2006-06-08 02:12:05
--------------------------
| --------------------- |
| | 手机 | |
| | 诺基严 摩托驴拉 | |
| | 联想 波导 | |
| ---------------------- |
--------------------------
| --------------------- |
| | 主板 | |
| | Inter ASUS | |
| | 微星 XXXXX | |
| ---------------------- |
--------------------------
| --------------------- |
| | 显卡 | |
| | 华硕 微星 | |
| | 联想 LG | |
| ---------------------- |
|-------------------------|
--------------------------
| --------------------- |
| | 彩电 | |
| | Lg 微星 | |
| | 联想 亲厦 | |
| ---------------------- |
|-------------------------|

希望大家能看得明白。
这个是关于主从表的控件香套问题。我这个与其它的不一样,因为像显卡,主板,手机和它下面的子项手机(诺基严 摩托驴拉 联想 波导),主板(Inter ASUS 微星 XXXXX) 同在一个表,我想从表中提取4个大类(显卡,主板,手机,其它)。然后根据这四大类,分别显示它的子类(显卡的子类--华硕,LG等,手机对应的子类--联想,诺基亚等)每个大类,提取4个小类。
下面是我的代码:
<asp:DataList ID="dlspShowBigSort" runat="server" >
<ItemTemplate>
<asp:LinkButton ID="lnkbtnBigSort" Text='<%# DataBinder.Eval(Container.DataItem,"SortName") %>' runat="server" />
<asp:Repeater ID="rptShowsmallSort" runat="server" >
<ItemTepalate>
//处处不知道怎么写了。

</ItemTepalate>
</asp:Repeater>

<%# DataBinder.Eval(Container.DataItem,"SortID") %>
</ItemTemplate>
</asp:DataList>

数据库示意图:
ID Name

1000 主板
1001 Inter
1002 ASUS
1003 微星
1004 XXXX
1005 YYYY
1006 AAAA
.
.
.
1100 ASLO
2000 手机
2001 联想
2002 波导
2003 MOTO
2004 诺基亚
.
.
.
2298 长虹



因为数据全是在一个表,大类随提取4个,对个大类对应的小类提取4个。参考了以下的,结果不行,因为他不是提取4个记录,也没有条件判断。

public void Page_Load(object sender, EventArgs e)
{
// 为Authors表创建 Connection 和 DataAdapter
string cnnString = @"server=(local)\NetSDK;database=pubs; Integrated Security=SSPI;";
SqlConnection cnn = new SqlConnection(cnnString);
SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);

//创建填充 DataSet.
DataSet ds = new DataSet();
cmd1.Fill(ds,"authors");

// 为Titles表创建 DataAdapter
SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);
cmd2.Fill(ds,"titles");

// 创建 Authors 表和 Titles 表之间的关系.
ds.Relations.Add("myrelation",
ds.Tables["authors"].Columns["au_id"],
ds.Tables["titles"].Columns["au_id"]);

// 绑定Authors到父Repeater
parentRepeater.DataSource = ds.Tables["authors"];
Page.DataBind();

cnn.Close();
cnn.Dispose();
}


请高手指教
...全文
109 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
triffang 2006-06-11
UP
回复
Eilien 2006-06-11
功能已经实现;应该结贴了。
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Text.aspx.cs" Inherits="Text" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="rptSortDataSoruce" runat="server" OnItemDataBound="rptSortDataSoruce_ItemDataBound" >
<ItemTemplate>
<asp:LinkButton ID="lnkBigSort" Text='<%# Eval("SortName") %>' CommandArgument= '<%#Eval("SortID") %>' runat="server" /><br />
<asp:DataList ID="dlstSmallSort" RepeatColumns="2" runat="server" >
<ItemTemplate>
<asp:LinkButton ID="lnkSmallSort" Text='<%# Eval("SortName") %>' CommandArgument='<%# Eval("SortID") %>' runat="server" />
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:Repeater>



<asp:DataGrid ID="dgrdProduct" Runat="Server" /> <br />

<asp:DataGrid ID="dgrdProducts" runat="server" />
</div>
</form>
</body>
</html>

.cs
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Text : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//创建连接
SqlConnection con = DB.createCon();
SqlCommand cmdSelectBigSort = new SqlCommand("proSelectBigSort", con);
cmdSelectBigSort.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader sdr = cmdSelectBigSort.ExecuteReader();

//绑定到rptSortDataSoruce控件
rptSortDataSoruce.DataSource = sdr;
rptSortDataSoruce.DataBind();
sdr.Close();

//关闭连接
con.Close();



////从数据库中读取产品信息
//SqlConnection connNorth = new SqlConnection(@"Server=localhost;Integrated Security=SSPI;Database=Northwind");
//SqlDataAdapter dad = new SqlDataAdapter("Select * From Products", connNorth);

////Fill DataSet
//DataSet dstProdcut = new DataSet();
//dad.Fill(dstProdcut, "products");

////Edit the Columns
//DataColumn dcolPreice = new DataColumn("Prices", typeof(decimal));
//dcolPreice.Expression = "Unitprice - (Unitprice * .1)";
//dstProdcut.Tables["products"].Columns.Add(dcolPreice);

////Binder DgrdProducts
//dgrdProduct.DataSource = dstProdcut;
//dgrdProduct.DataBind();


//SqlConnection conNorthwind = new SqlConnection( @"Server=localhost;Integrated Security=SSPI;Database=Northwind" );
//SqlDataAdapter dadProducts = new SqlDataAdapter( "Select * From Products", conNorthwind );;

////Grab the products table
//DataSet dstProducts = new DataSet();
//dadProducts.Fill( dstProducts, "Products" );

////Add the calculated column
//DataColumn dcolSalePrice;
//dcolSalePrice = new DataColumn( "SalePrice", typeof( Decimal ) );
//dcolSalePrice.Expression = "UnitPrice - (UnitPrice * .10)";
//dstProducts.Tables[ "Products" ].Columns.Add( dcolSalePrice );

////Bind to the DataGrid
//dgrdProducts.DataSource = dstProducts;
//dgrdProducts.DataBind();
}
}
protected void rptSortDataSoruce_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//提取rptShowSort中的控件
DataList d = (DataList)(e.Item.FindControl("dlstSmallSort"));
LinkButton lnk = (LinkButton)(e.Item.FindControl("lnkBigSort"));

//执行存储过程
SqlConnection conSmallSort = DB.createCon();
SqlCommand cmdSmallSort = new SqlCommand("proSelectSmallSort",conSmallSort);
cmdSmallSort.CommandType = CommandType.StoredProcedure;
cmdSmallSort.Parameters.Add("@ClassName", lnk.CommandArgument);
conSmallSort.Open();

//执行存储过程
SqlDataReader sdrSmallSort = cmdSmallSort.ExecuteReader();

//绑定到rptSmallSort控件
d.DataSource = sdrSmallSort;
d.DataBind();

//关闭连接
conSmallSort.Close();

}
}



谢谢各位的帮助。非常感谢一位Q友让我学会了用简单的方法实现控件香套。。




回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2006-06-08 02:12
社区公告
暂无公告