Q:我用ASP.NET在黄页的制作中,常常在首页放着一级分类和二级分类,
这样的功能是怎样实现的,使用datalist嘛?我用各种Repeat,datalist,datagrid,
结果都没有实现!
好多的例子使用Asp实现的,很麻烦!难道ASP.NET不能实现吗?
样式像下面的连接(热门行业的部分)
http://yp.sina.net/
A:经过昨天晚上回家的思考,由于上午有其它工作,没有去做昨天的两个数据源的绑定和有自己的相应的超连接,终于在今天下午我做了出来,拿来与大家分享。
我用了两个datalist去连接不同的数据源,其中的一个datalist放在另一个之中。其实关键的是在于第二个数据源的连接,因为第二个数据源中的dataset的数据是根据第一个数据源的当前记录所选取的。
我在父datalist中设置数据源的时候使用了ItemDataBound来触发第二个datalist的绑定。这样就轻松的解决了
两个数据源的绑定。
还是来看看code吧!
Codebehind:
Public Ds1, Ds2 As DataSet
Dim sOK As String = ""
Dim CN As String = "workstation id=UPING;packet size=4096;integrated security=SSPI;data source=UPING;persist security info=False;initial catalog=Northwind"
Public Count1, count2 As Integer
' Public I As Integer = 0
'Public ss As String = "Tables[Table].DefaultView.[" & I & "]"


Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not IsPostBack Then
DataAccess()
DataList1.DataSource = Ds1
DataList1.DataBind()
End If
End Sub
![]()
![]()
Public Function DataAccess()Function DataAccess() As String
Dim sz As String
Dim SQL2 As String = "SELECT * FORM [ORDERS]"
Dim SQL1 As String = "select * from employees"
Ds1 = SqlHelper.ExecuteDataset(CN, CommandType.Text, SQL1)
Count1 = Ds1.Tables(0).Rows.Count
End Function
![]()
Public Sub test()Sub test()
End Sub
![]()
![]()
Private Sub DataList1_ItemDataBound()Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
Dim ss As String
Dim DL As DataList
Dim hy As HyperLink
hy = CType(e.Item.FindControl("HyperLink1"), HyperLink)
ss = hy.Text
Dim SQL2 As String = "select * from orders where employeeID=" & ss
![]()
Ds2 = SqlHelper.ExecuteDataset(CN, CommandType.Text, SQL2)
DL = CType(e.Item.FindControl("DataList2"), DataList)
DL.DataSource = Ds2
DL.DataBind()
Ds2.Dispose()
End Sub
End Class
HTML中的代码:
![]()
<%
@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="DataListTest.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD <FONT color=#000000>HTML</FONT> 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 40px" runat="server">
<ItemTemplate>
![]()
<P><%
test()%>
![]()
<asp:HyperLink id=HyperLink1 runat="server" NavigateUrl='<%# DataBinder.Eval(Ds1,"Tables[Table].DefaultView.[5].LastName") %>' Text='<%
# DataBinder.Eval(Container.dataItem,"employeeID" ) %>' Width="224px">
</asp:HyperLink></P>
<P>
<asp:DataList id="DataList2" runat="server" RepeatColumns="3">
<ItemTemplate>
![]()
<asp:HyperLink id="Hyperlink2" runat="server" Width="224px" Text='<%# DataBinder.Eval(Container.dataItem,"CustomerID" ) %>' NavigateUrl='<%
# DataBinder.Eval(Container.dataItem,"CustomerID") %>'>
</asp:HyperLink></P>
<asp:DataList id="Datalist3" runat="server"></asp:DataList></P>
</ItemTemplate>
</asp:DataList></P> </ItemTemplate> </asp:DataList></FONT>
</form>
</body>
</HTML>
![]()