agree with cnlamar, use two sql statementselect distinct GroupId, GroupName from yourtableselect * from yourtable
then create a relationship between the DataTable's and use nested repeaters, for example, seeHOW TO: Display Hierarchical Data by Using Nested Repeater Controls and Visual C# .NET http://support.microsoft.com/default.aspx?scid=KB;EN-US;q306154#2
你說的是repeater嵌套嗎? 如是,請看: <!-- The same as 24_Repeater_Repeater/ --> <%@ Page Language="vb" Debug="true"%> <%@ Import NameSpace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) If Not Page.IsPostBack Then Call GetParentHeaders() End If End Sub Sub GetParentHeaders() Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/NestedRepeatersDemo.mdb") Dim strSQL As String = "SELECT * FROM tblHeaders" Dim cmd As OleDbCommand = New OleDbCommand(strSQL, Conn) 'cmd.CommandType = CommandType.Text Dim dr As OleDbDataReader Conn.Open() dr = cmd.ExecuteReader rpParentHeaders.DataSource = dr rpParentHeaders.DataBind() dr.Close() cmd.Dispose() Conn.Dispose() End Sub Function GetChildLinks(ByVal intPK As Integer) As OleDbDataReader Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/NestedRepeatersDemo.mdb") Dim strSQL As String = "SELECT * FROM tblLinks WHERE ForiegnKey =" & intPK Dim cmd As OleDbCommand = New OleDbCommand(strSQL, Conn) 'cmd.CommandType = CommandType.Text Conn.Open() Return cmd.ExecuteReader(CommandBehavior.CloseConnection) End Function</script> <HTML><HEAD> <title>ASP.net Walkthrough - Using Nested Repeaters</title></HEAD><body> <form id="Form1" method="post" runat="server"> <H1>My Home Page</H1><P> <asp:Repeater id="rpParentHeaders" runat="server"> <ItemTemplate> <font size="2"><strong> <%# DataBinder.Eval(Container.DataItem, "strHeader") %> </strong></font> <br> <asp:Repeater ID="rpChildLinks" Runat=server DataSource='<%# GetChildLinks(Ctype(DataBinder.Eval(Container.DataItem,"PrimaryKey"), Integer)) %>'> <ItemTemplate> <font size="1"><a href='<%# DataBinder.Eval(Container.DataItem, "strLinkURL")%>'> <%# DataBinder.Eval(Container.DataItem, "strLinkName") %> </a></font> <br> </ItemTemplate> </asp:Repeater><br> </ItemTemplate> </asp:Repeater> </P> </form> </body> </HTML>
then create a relationship between the DataTable's and use nested repeaters, for example, seeHOW TO: Display Hierarchical Data by Using Nested Repeater Controls and Visual C# .NET
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q306154#2
如是,請看:
<!-- The same as 24_Repeater_Repeater/ -->
<%@ Page Language="vb" Debug="true"%>
<%@ Import NameSpace="System.Data" %>
<%@ Import NameSpace="System.Data.OleDb" %>
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
If Not Page.IsPostBack Then
Call GetParentHeaders()
End If
End Sub Sub GetParentHeaders()
Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/NestedRepeatersDemo.mdb")
Dim strSQL As String = "SELECT * FROM tblHeaders"
Dim cmd As OleDbCommand = New OleDbCommand(strSQL, Conn)
'cmd.CommandType = CommandType.Text
Dim dr As OleDbDataReader
Conn.Open()
dr = cmd.ExecuteReader
rpParentHeaders.DataSource = dr
rpParentHeaders.DataBind()
dr.Close()
cmd.Dispose()
Conn.Dispose()
End Sub Function GetChildLinks(ByVal intPK As Integer) As OleDbDataReader
Dim Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/NestedRepeatersDemo.mdb")
Dim strSQL As String = "SELECT * FROM tblLinks WHERE ForiegnKey =" & intPK
Dim cmd As OleDbCommand = New OleDbCommand(strSQL, Conn)
'cmd.CommandType = CommandType.Text
Conn.Open()
Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
End Function</script>
<HTML><HEAD>
<title>ASP.net Walkthrough - Using Nested Repeaters</title></HEAD><body>
<form id="Form1" method="post" runat="server">
<H1>My Home Page</H1><P>
<asp:Repeater id="rpParentHeaders" runat="server">
<ItemTemplate>
<font size="2"><strong>
<%# DataBinder.Eval(Container.DataItem, "strHeader") %>
</strong></font>
<br>
<asp:Repeater ID="rpChildLinks" Runat=server DataSource='<%# GetChildLinks(Ctype(DataBinder.Eval(Container.DataItem,"PrimaryKey"), Integer)) %>'>
<ItemTemplate>
<font size="1"><a href='<%# DataBinder.Eval(Container.DataItem, "strLinkURL")%>'>
<%# DataBinder.Eval(Container.DataItem, "strLinkName") %>
</a></font>
<br>
</ItemTemplate>
</asp:Repeater><br>
</ItemTemplate>
</asp:Repeater>
</P>
</form>
</body>
</HTML>
以前有过帖子 找找!