<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%"> </td>
<td width="10%"> </td>
<td width="9%"> </td>
<td width="18%"> </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 的属性。
<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%"> </td>
<td width="10%"> </td>
<td width="9%"> </td>
<td width="18%"> </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 的属性。
'创建一个显示主页子版面的函数
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
<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真晕阿。
<asp:DataList ID="Datalist2" Runat="server" datasource="这里是函数获取datasource">
<ItemTemplate>。</ItemTemplate>
</asp:DataList>
http://dotnet.aspx.cc/ShowDetail.aspx?id=54F4C732-AAE2-4135-FB1B-7B4B613BAA33