<table width="99%" border="0">
<asp:DataList ID="Datalist1" Runat="server">
<ItemTemplate>
<tr>
<td colspan="6">
<%#DataBinder.Eval(Container,"DataItem.ClassName")%>
</td>
</tr>
<asp:DataList ID="Datalist2" Runat="server">
<ItemTemplate>
<tr>
<td width="2%" height="79"></td>
<td><%#DataBinder.Eval(Container,"DataItem.BoardName")%></td>
<td width="8%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="9%">&nbsp;</td>
<td width="18%">&nbsp;</td>
</tr>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>
</table>
#########################################
#########################################
    '创建一个显示主页版面父分类的函数
    Public Function GetBoardClass() As DataSet
        conn.Open()
        access = "SELECT * from boardclass"
        ADA = New OleDbDataAdapter(access, conn)
        Try
            ADA.Fill(ADS, "Boardclass")
            conn.Close()
            Return ADS
        Catch ex As Exception        End Try
    End Function
#############################################
#############################################
    '创建一个显示主页子版面的函数
    Public Function GetChildBoard() As DataSet
        conn.Open()
        access = "SELECT board.* FROM Board INNER JOIN Boardclass ON Board.BoardClassID=BoardClass.BoardClassID;"
        ADA = New OleDbDataAdapter(access, conn)
        Try
            ADA.Fill(ADS, "Board")
            conn.Close()
            Return ADS
        Catch ex As Exception        End Try
    End Function
#########################################
#########################################
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            Datalist1.DataSource = BoardClass.GetBoardClass
            Datalist1.DataBind()
        End If
    End Sub
    Private Sub Datalist1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles Datalist1.ItemDataBound
        Dim datalistclass As DataList = CType(e.Item.FindControl("datalist2"), DataList)
        datalistclass.DataSource = BoardClass.GetChildBoard
        datalistclass.DataBind()
    End Sub
#################################################
#################################################我去掉datalist2 datalist1就正常显示。。两个就提示出错:DataBinder.Eval:“System.Data.DataRowView”不包含名称为 BoardName 的属性。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Data.DataRowView”不包含名称为 BoardName 的属性。

解决方案 »

  1.   

    BoardName ,数据库的列存在问题:可能不存在。
      

  2.   

    有阿。抓个数据表字段给你们看看http://tinypic.com/1yliiw
      

  3.   


        '创建一个显示主页子版面的函数
        Public Function GetChildBoard()
            conn.Open()
            access = "SELECT board.* FROM Board INNER JOIN Boardclass ON Board.BoardClassID=BoardClass.BoardClassID;"
            ADA = New OleDbDataAdapter(access, conn)
            Try
                ADA.Fill(ADS, "Board")
                conn.Close()
                Return ADS.Tables("Board")
            Catch ex As Exception        End Try
        End Function搞定嵌套显示了,原来这里返回成tables就ok了。。
    但是现在主从显示有问题。应该是SQL语句的问题?
    如图:http://tinypic.com/1ymtls
      

  4.   

    <asp:DataList ID="Datalist1" Runat="server">
    <ItemTemplate>
    <asp:Label ID="classid" Runat="server" text='<%#DataBinder.Eval(Container,"DataItem.BoardClassId")%>'></asp:Label>
    <table width="99%" border="0">
    <tr>
    <td colspan="6" class ="title">
    <%#DataBinder.Eval(Container,"DataItem.ClassName")%>
    </td>
    </tr>
    <asp:DataList ID="Datalist2" Runat="server">
    <ItemTemplate>
    <tr>
    <td width="2%" height="20"></td>
    <td height="20"><%#DataBinder.Eval(Container,"DataItem.BoardName")%></td>
    <td width="8%" height="20"></td>
    <td width="10%" height="20"></td>
    <td width="9%" height="20"></td>
    <td width="18%" height="20"></td>
    </tr>
    </ItemTemplate>
    </asp:DataList>
    </table>
    </ItemTemplate>
    </asp:DataList>
    #################################
     '创建一个显示主页版面父分类的函数
        Public Function GetBoardClass()
            conn.Open()
            access = "SELECT * from boardclass order by ClassOrderId"
            ADA = New OleDbDataAdapter(access, conn)
            Try
                ADA.Fill(ADS, "Boardclass")
                conn.Close()
                Return ADS.Tables("Boardclass")
            Catch ex As Exception        End Try
        End Function
    ##########################
       '创建一个显示主页子版面的函数
        Public Function GetChildBoard(ByVal classid As Integer)
            access = "SELECT * FROM Board where BoardClassID= " & classid
            ADA = New OleDbDataAdapter(access, conn)
            Try
                ADA.Fill(ADS, "Board")
                conn.Close()
                Return ADS.Tables("Board")
            Catch ex As Exception        End Try
        End Function
    #########################
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not Page.IsPostBack Then
                Datalist1.DataSource = BoardClass.GetBoardClass
                Datalist1.DataBind()
            End If
        End Sub
        Private Sub Datalist1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles Datalist1.ItemDataBound
            Dim ClassID As Integer = Convert.ToInt32(CType(e.Item.FindControl("classid"), Label).Text)
            Dim ClassID2 As DataList = CType(e.Item.FindControl("datalist2"), DataList)
            ClassID2.DataSource = BoardClass.GetChildBoard(ClassID)
            ClassID2.DataBind()
        End Sub原来是要加一个label控件来付父类的id值。然后再select ....where...
    晕。。还是有问题。重复多了一个classid=1。我把最后的代码贴出来最后的图:http://tinypic.com/1yn3m9真晕阿。
      

  5.   

    在Datalist2中要设置datasource
    <asp:DataList ID="Datalist2" Runat="server" datasource="这里是函数获取datasource">
    <ItemTemplate>。</ItemTemplate>
    </asp:DataList>
      

  6.   

    麻煩看我最後貼的代碼,前面的可以不用看了。嵌套显示沒問題了。但是重复多了一个classid=1最后的图:http://tinypic.com/1yn3m9
      

  7.   

    看看孟子的关于主从表的例子吧
    http://dotnet.aspx.cc/ShowDetail.aspx?id=54F4C732-AAE2-4135-FB1B-7B4B613BAA33
      

  8.   

    搜索 classid=1 ,看他在什么地方出现,把他删除
      

  9.   

    对 EMU 1212 不错~! ^^!