1.View代码
<asp:DataList BackColor="Yellow" ID="DataList1" runat="server" Width="300px" Height="200px" OnItemCreated="DataList1_ItemDataBound" >
<ItemTemplate>
<uc2:ItemInfo runat="server" ID="ItemInfo" ItemID="6" />
</ItemTemplate>
</asp:DataList>
2. cs代码
- 这是页面登录的时候加载数据session.Items.Tolist();是我的ADO代码
- 如果没有这个DataBind()就不会执行下面的ItemDataBound
- tip:ItemInfo test = (ItemInfo)e.Item.FindControl("ItemInfo")这个必不可少,如果不查询控件的化,你加载的时候,你用户控件里面的标签,就一直报错,无法实例化
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 绑定数据到DataList控件
DataList1.DataSource = session.Items.ToList();
DataList1.DataBind();
}
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ItemInfo test = (ItemInfo)e.Item.FindControl("ItemInfo");
//获取绑定的数据
Items product = (Items)e.Item.DataItem;
// 创建添加控件的代码
// 例如:创建一个Label控件来显示产品的名称
test.ItemID= product.ID;
e.Item.Controls.Add(test);
}
}
3.用户控件
public partial class ItemInfo : System.Web.UI.UserControl
{
public long ItemID { get;set;}
public ItemInfo(long itemID)
{
this.ItemID = itemID;
}
public ItemInfo()
{
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
session5Entities session = new session5Entities();
var item = session.Items.Where(x => x.ID == this.ItemID).FirstOrDefault();
if (item != null)
{
if (Label1 != null)
{
Label1.Text = item.Title.ToString();
}
}
}
catch (Exception ex)
{
}
}
}
}
最终的效果