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
>