在DataList中连接两个数据源的解决。

博主在使用ASP.NET制作黄页时,尝试用各种Repeat、datalist、datagrid实现首页一级和二级分类功能未成功。后经思考,用两个datalist连接不同数据源,将一个放在另一个之中,通过在父datalist设置数据源时用ItemDataBound触发第二个datalist绑定,解决了问题。

Q:我用ASP.NET在黄页的制作中,常常在首页放着一级分类和二级分类,
这样的功能是怎样实现的,使用datalist嘛?我用各种Repeat,datalist,datagrid,
结果都没有实现!
好多的例子使用Asp实现的,很麻烦!难道ASP.NET不能实现吗?
样式像下面的连接(热门行业的部分)
http://yp.sina.net/

A:经过昨天晚上回家的思考,由于上午有其它工作,没有去做昨天的两个数据源的绑定和有自己的相应的超连接,终于在今天下午我做了出来,拿来与大家分享。
我用了两个datalist去连接不同的数据源,其中的一个datalist放在另一个之中。其实关键的是在于第二个数据源的连接,因为第二个数据源中的dataset的数据是根据第一个数据源的当前记录所选取的。
我在父datalist中设置数据源的时候使用了ItemDataBound来触发第二个datalist的绑定。这样就轻松的解决了
两个数据源的绑定。
还是来看看code吧!

Codebehind:

None.gif   Public  Ds1, Ds2  As  DataSet
None.gif    
Dim  sOK  As   String   =   " "
None.gif
     Dim  CN  As   String   =   " workstation id=UPING;packet size=4096;integrated security=SSPI;data source=UPING;persist security info=False;initial catalog=Northwind"
None.gif
     Public  Count1, count2  As   Integer
None.gif    
'  Public I As Integer = 0
None.gif
     ' Public ss As String = "Tables[Table].DefaultView.[" & I & "]"
None.gif

ExpandedBlockStart.gifContractedBlock.gif    
Private   Sub Page_Load() Sub Page_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
InBlock.gif        
'Put user code to initialize the page here
InBlock.gif
        If Not IsPostBack Then
InBlock.gif            DataAccess()
InBlock.gif            DataList1.DataSource 
= Ds1
InBlock.gif            DataList1.DataBind()
InBlock.gif        
End If
ExpandedBlockEnd.gif    
End Sub

None.gif
ExpandedBlockStart.gifContractedBlock.gif    
Public   Function DataAccess() Function DataAccess() As String
InBlock.gif        
Dim sz As String
InBlock.gif        
Dim SQL2 As String = "SELECT * FORM [ORDERS]"
InBlock.gif
        Dim SQL1 As String = "select * from employees"
InBlock.gif
        Ds1 = SqlHelper.ExecuteDataset(CN, CommandType.Text, SQL1)
InBlock.gif        Count1 
= Ds1.Tables(0).Rows.Count
ExpandedBlockEnd.gif    
End Function

ExpandedBlockStart.gifContractedBlock.gif    
Public   Sub test() Sub test()
InBlock.gif   
ExpandedBlockEnd.gif    
End Sub

None.gif
ExpandedBlockStart.gifContractedBlock.gif    
Private   Sub DataList1_ItemDataBound() Sub DataList1_ItemDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
InBlock.gif        
Dim ss As String
InBlock.gif        
Dim DL As DataList
InBlock.gif        
Dim hy As HyperLink
InBlock.gif        hy 
= CType(e.Item.FindControl("HyperLink1"), HyperLink)
InBlock.gif        ss 
= hy.Text
InBlock.gif        
Dim SQL2 As String = "select * from orders where employeeID=" & ss
InBlock.gif
InBlock.gif        Ds2 
= SqlHelper.ExecuteDataset(CN, CommandType.Text, SQL2)
InBlock.gif        DL 
= CType(e.Item.FindControl("DataList2"), DataList)
InBlock.gif        DL.DataSource 
= Ds2
InBlock.gif        DL.DataBind()
InBlock.gif        Ds2.Dispose()
ExpandedBlockEnd.gif    
End Sub

None.gif
End Class  


HTML中的代码:

ExpandedBlockStart.gif ContractedBlock.gif    <% dot.gif @ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="DataListTest.WebForm1" %>
None.gif
<! DOCTYPE HTML PUBLIC "-//W3C//DTD <FONT color=#000000 > HTML </ FONT >  4.0 Transitional//EN">
None.gif
< HTML >
None.gif 
< HEAD >
None.gif  
< title > WebForm1 </ title >
None.gif  
< meta  name ="GENERATOR"  content ="Microsoft Visual Studio .NET 7.1" >
None.gif  
< meta  name ="CODE_LANGUAGE"  content ="Visual Basic .NET 7.1" >
None.gif  
< meta  name ="vs_defaultClientScript"  content ="JavaScript" >
None.gif  
< meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
None.gif 
</ HEAD >
None.gif 
< body  MS_POSITIONING ="GridLayout" >
None.gif  
< form  id ="Form1"  method ="post"  runat ="server" >
None.gif   
< FONT  face ="宋体" >
None.gif    
< asp:DataList  id ="DataList1"  style ="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 40px"  runat ="server" >
None.gif     
< ItemTemplate >
ExpandedBlockStart.gifContractedBlock.gif      
< P > <% dot.gif test() %>
ExpandedBlockStart.gifContractedBlock.gif       
< asp:HyperLink  id =HyperLink1  runat ="server"  NavigateUrl ='<%#  DataBinder.Eval(Ds1,"Tables[Table].DefaultView.[5].LastName") % > ' Text=' <% dot.gif # DataBinder.Eval(Container.dataItem,"employeeID" )  %> ' Width="224px">
None.gif       
</ asp:HyperLink ></ P >
None.gif      
< P > &nbsp;
None.gif       
< asp:DataList  id ="DataList2"  runat ="server"  RepeatColumns ="3" >
None.gif        
< ItemTemplate >
ExpandedBlockStart.gifContractedBlock.gif         
< asp:HyperLink  id ="Hyperlink2"  runat ="server"  Width ="224px"  Text ='<%#  DataBinder.Eval(Container.dataItem,"CustomerID" ) % > ' NavigateUrl=' <% dot.gif # DataBinder.Eval(Container.dataItem,"CustomerID" %> '>
None.gif         
</ asp:HyperLink ></ P >
None.gif      
< asp:DataList  id ="Datalist3"  runat ="server" ></ asp:DataList ></ P >
None.gif     
</ ItemTemplate >
None.gif    
</ asp:DataList ></ P >   </ ItemTemplate >   </ asp:DataList ></ FONT >
None.gif  
</ form >
None.gif 
</ body >
None.gif
</ HTML >
None.gif

转载于:https://www.cnblogs.com/rippleyong/archive/2004/06/22/17877.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值