结合DataList, 动态加载用户控件

实验做的是个宠物显示. 

1. 将一个宠物的信息,做在一个用户控件中.

2. 将用户控件以 服务端的 Table显示

3. 将用户控件以 DataList方式显示.  

--------------

用户控件片段代码

后台.hotPetControl.cs

private   string  petId;
        
public   string  PetId
        
{
            
set
            
{
                
this.petId = value.ToString();
            }

        }


        
private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
if(!this.IsPostBack)
            
{
                SqlConnection conn 
= DB.getConn();
                conn.Open();

                SqlCommand cmd 
= new SqlCommand();
                cmd.Connection 
=  conn;
                

                cmd.CommandText 
= string.Format(@"select * from pet where petId = '{0}'",this.petId);
                SqlDataReader sdr 
= cmd.ExecuteReader();

                sdr.Read();

                
this.lblpetId.Text = sdr.GetString(1);
                
this.lblName.Text = sdr.GetString(0);
                
this.lblType.Text = sdr.GetString(2);
                
this.lblPrice.Text = sdr.GetString(3);
                
this.imgPet.ImageUrl = string.Format(@"imagesPet/{0}",sdr.GetString(5));
                
//this.hpLinkDetail.NavigateUrl = string.Format(@"petDetail.aspx?pId={0}",this.petId);

            }

        }

前台 hotPetControl.ascx  省略

==================

2. 服务端 Table 方式显示

 

private   int  rowNum  =   2
        
private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            SqlConnection conn 
= DB.getConn();
            SqlCommand cmd  
= new SqlCommand("select top 4 petId from pet",conn);
            conn.Open();

            
int i=0;
            SqlDataReader sdr 
= cmd.ExecuteReader();
            TableRow tr 
= new TableRow();

            
while(sdr.Read())
            
{
                i 
= i+1;
                System.Web.UI.WebControls.TableCell tc 
= new TableCell();
                hotPetControl hpc 
= (hotPetControl) this.LoadControl("hotPetControl.ascx");
                hpc.PetId 
= sdr.GetString(0);
                
                tc.Controls.Add(hpc);
                tr.Controls.Add(tc);
                
if(i % this.rowNum == 0)// 一行显示几列 
                {
                    
this.Table1.Rows.Add(tr);
                    tr 
= new TableRow();
                }

            }

            
if(1%this.rowNum !=0// 如果最后 除不尽时,最后再加入一行. 把不满的行也加入.
            {
                
this.Table1.Rows.Add(tr);
            }

            sdr.Close();
            conn.Close();
        }

3. 接合DataList方式.

前台:

 

<% @ Page language="c#" Codebehind="showAllHotPet.aspx.cs" AutoEventWireup="false" Inherits="ASPNETCASE4.petShop.showAllHotPet"  %>
<% @ Register TagPrefix="uc1" TagName="hotPetControl" Src="hotPetControl.ascx"  %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"  >
< HTML >
    
< HEAD >
        
< title > showAllHotPet </ title >
        
< meta  name ="GENERATOR"  Content ="Microsoft Visual Studio .NET 7.1" >
        
< meta  name ="CODE_LANGUAGE"  Content ="C#" >
        
< 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 ="宋体" >
                
< TABLE  id ="Table1"  cellSpacing ="1"  cellPadding ="1"  width ="500"  align ="center"  border ="1" >
                    
< TR >
                        
< TD >
                            
< asp:DataList  id ="DataListAll"  runat ="server"  Width ="100%"  RepeatDirection ="Horizontal"  RepeatColumns ="2" >
                                
< ItemTemplate >
                                    
< uc1:hotPetControl  id ="HotPetControl1"  runat ="server"  PetId  = '<%#  DataBinder.Eval(Container.DataItem,"petId")% > '>
                                    
</ uc1:hotPetControl >
                                
</ ItemTemplate >
                                
< AlternatingItemTemplate >
                                    
< uc1:hotPetControl  id ="HotPetControl2"  runat ="server"  PetId  = '<%#  DataBinder.Eval(Container.DataItem,"petId")% > '>
                                    
</ uc1:hotPetControl >
                                
</ AlternatingItemTemplate >
                            
</ asp:DataList ></ TD >
                    
</ TR >
                    
< TR >
                        
< TD >
                            
< asp:DataList  id ="DataListPicture"  runat ="server"  RepeatDirection ="Horizontal" >
                                
< ItemTemplate >
                                
                                    
< TABLE  id ="Table2"  style ="WIDTH: 87px; HEIGHT: 59px"  cellSpacing ="1"  cellPadding ="1"  width ="87"
                                        border
="1" >
                                                                                
< TR >
                                            
< TD >
                                                
< img  src ="imagesPet/<%# DataBinder.Eval(Container.DataItem," petPhono") % > "  width="80" height="100">
                                            
                                            
</ TD >
                                        
</ TR >
                                        
< TR >
                                            
< TD >
                                                
< href ="detail.aspx?pId=<%# DataBinder.Eval(Container.DataItem," petId") % > ">查看详细 </ a ></ TD >
                                        
</ TR >
                                    
</ TABLE >
                                
</ ItemTemplate >
                            
</ asp:DataList ></ TD >
                    
</ TR >
                
</ TABLE >
            
</ FONT >
        
</ form >
    
</ body >
</ HTML >

后台:

 

private   void  Page_Load( object  sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(!this.IsPostBack)
            
{
                SqlConnection conn 
= DB.getConn();
                conn.Open();

                SqlCommand cmd 
= new SqlCommand("select * from pet",conn);
                SqlDataReader sdr 
= cmd.ExecuteReader();

                
this.DataListAll.DataSource = sdr;
                
this.DataListAll.DataBind();

                sdr.Close();
                
                SqlDataReader sdr2 
= cmd.ExecuteReader();
                
this.DataListPicture.DataSource = sdr2;
                
this.DataListPicture.DataBind();

                sdr.Close();
                conn.Close();
            }

        }

 

======== Finished

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值