如何实现datalist动态数据绑定

<asp:datalist   id="list"   runat="server"   CellPadding="0"   Width="100%"></asp:datalist>  
   
  ------------------------------------------------------------------------  
   
  page_load  
  //   套用显示方式模板/*简单图文、详细图文、文字链接*/  
  SelectTemplate(int.Parse(Session["mode"].ToString()));  
   
  --------------------------------------------------------------------------  
  //   选择一合适的模板  
  public   void   SelectTemplate(int   mode)  
  {  
  switch(mode)  
  {  
  case   0: //   简单图文  
  PageSize   =   12;  
  list.RepeatColumns   =   3;  
  list.RepeatDirection   =   RepeatDirection.Horizontal;  
   
  list.RepeatLayout   =   RepeatLayout.Table;  
  //list.BorderWidth   =   Unit.Pixel(1);  
  //list.BorderStyle   =   BorderStyle.Solid;  
  list.ItemStyle.Width   =   Unit.Pixel(195);  
   
  list.ItemStyle.VerticalAlign   =   VerticalAlign.Top;  
  list.ItemTemplate   =   new   SimpleTemplate(ListItemType.Item);  
  break;  
  case   1: //   详细图文  
  PageSize   =   4;  
  list.RepeatColumns   =   0;  
  list.RepeatDirection   =   RepeatDirection.Vertical;  
  list.RepeatLayout   =   RepeatLayout.Table;  
  list.GridLines   =   GridLines.None;  
  list.ItemTemplate   =   new   DetailTemplate(ListItemType.Item);  
  break;  
  case   2: //   文字链接  
  PageSize   =   20;  
  list.RepeatColumns   =   0;  
  list.RepeatDirection   =   RepeatDirection.Vertical;  
  list.RepeatLayout   =   RepeatLayout.Table;  
  list.GridLines   =   GridLines.None;  
  list.ItemTemplate   =   new   TextLinkTemplate(ListItemType.Item);  
  break;  
  }  
  }  
  }  
   
   
  ------------------------------------------------------------------------  
   
  //   简约方式显示模板  
  public   class   SimpleTemplate   :   ITemplate  
  {  
  ListItemType   templateType;  
  public   SimpleTemplate(ListItemType   type)  
  {  
  templateType   =   type;  
  }  
   
  public   void   InstantiateIn(System.Web.UI.Control   container)  
  {  
  Literal   lc   =   new   Literal();  
  switch(templateType)  
  {  
  case   ListItemType.Header:  
  break;  
  case   ListItemType.Item:  
  lc.Text   =   "<TABLE   border=0   cellspacing=4   cellPadding=0   style='font-family:宋体;font-size:9pt'>";  
  lc.DataBinding   +=   new   EventHandler(TemplateControl_DataBinding);  
  break;  
  case   ListItemType.AlternatingItem:  
  break;  
  case   ListItemType.Footer:  
  break;  
  }  
  container.Controls.Add(lc);  
  }  
   
  private   void   TemplateControl_DataBinding(object   sender,System.EventArgs   e)  
  {  
  Literal   lc;  
  lc   =   (Literal)   sender;  
  DataListItem   Container   =   (DataListItem)   lc.NamingContainer;  
  String   pictureID   =   DataBinder.Eval(Container.DataItem,   "PictureID").ToString();  
   
  PhotoLib.PicturesDB   picturesDB   =   new   PhotoLib.PicturesDB();  
  PhotoLib.Pictures   pictures   =   new   PhotoLib.Pictures();  
  DataSet   ds   =   new   DataSet();  
   
  pictures   =   picturesDB.GetPictures(pictureID);  
  ds   =   picturesDB.GetPictureDetails(pictureID);  
   
  int   count   =   ds.Tables["PictureDetails"].Rows.Count; //   获得数据集的行数  
  //   获得第一行的相关数据(要注意空值的检查)  
  String   pictureImage   =   ds.Tables["PictureDetails"].Rows[0].ItemArray[5].ToString(); //   图片文件名  
  String   author   =   ds.Tables["PictureDetails"].Rows[0].ItemArray[6].ToString(); //   作者  
  String   user   =   pictures.UserID;  
  String   auditDate   =   pictures.AuditDate.ToLongDateString();  
  //String   pictureDate   =   "";  
  //if(ds.Tables["PictureDetails"].Rows[0].ItemArray[1]   !=   DBNull.Value)  
  // pictureDate   =   ((DateTime)ds.Tables["PictureDetails"].Rows[0].ItemArray[1]).ToLongDateString(); //   拍摄日期  
   
  //   获得图片文件的路径(此处肯定是小图)  
  String   yearstr   =   pictureImage.Substring(0,4);  
  String   datestr   =   pictureImage.Substring(0,8);  
  String   typestr   =   pictureImage.Substring(11,1);  
   
  String   path   =   "PicLib/SmallPic/"   +   yearstr   +"p/PhotoC/"   +   datestr   +   "/"; //   分类图片  
  if(typestr   ==   "b")  
  path   =   "PicLib/SmallPic/"   +   yearstr   +"p/PhotoP/"   +   datestr   +   "/"; //   专业图片  
   
  string   cap   =   pictures.Caption;  
  if(cap.Length>25)  
  cap   =   cap.Substring(0,22)   +   "...";  
   
  //   输出样式  
  lc.Text   +=   "<TR><TD   height='130'width=195   valign=middle   align=center>"; //   百分比方式无效??  
  lc.Text   +=   "<a   href='PictureDetails.aspx?pid="+   pictureID   +   "'   target=_blank><img   src='"   +   path   +   pictureImage   +   "'   border=0></a>";  
  lc.Text   +=   "</TD></TR><TR><TD   valign=top   height=32>";  
  if(count>1)  
  lc.Text   +=   "◆   "   +   "<a   href='PictureDetails.aspx?pid="+   pictureID   +   "'   target=_blank>"   +   cap   +   "("   +   count.ToString()   +   "张)</a>";  
  else  
  lc.Text   +=   "◆   "   +   "<a   href='PictureDetails.aspx?pid="+   pictureID   +   "'   target=_blank>"   +   cap   +   "</a>";  
  lc.Text   +=   "</TD></TR><TR><TD   height=20>";  
  //lc.Text   +=   "&nbsp;&nbsp;作者:"   +   author   +   "   上传日期:"   +   auditDate;  
  lc.Text   +=   "&nbsp;&nbsp;上传:"   +   user;  
  lc.Text   +=   "</TD></TR><TR><TD   align='middle'   background='images/line03.gif'   height='1'></TD></TR></TABLE>";  
  }  
  }  
   
  -------------------------------------------------------------------------  
  演示例子请见  
  http://www.gdcic.net/photo/PicturesList.aspx?Type=1&scope=1  
  页面中有三种显示模式  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值