如何实现datalist动态数据绑定 [转]
时间:2007-07-30 来源:zengdandream
<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 += " 作者:" + author + " 上传日期:" + auditDate;
lc.Text += " 上传:" + 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
页面中有三种显示模式
------------------------------------------------------------------------
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 += " 作者:" + author + " 上传日期:" + auditDate;
lc.Text += " 上传:" + 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
页面中有三种显示模式
相关阅读 更多 +