aspx:
<asp:Repeater ID="rptSearch" OnItemDataBound="rptSearch_ItemDataBound" runat="server" Visible="true">cs:
protected void rptSearch_ItemDataBound(object sender, RepeaterItemEventArgs e){
}ArrayList里面的对象是一个有10个属性的class。用datatable绑定时可以触发“rptSearch_ItemDataBound“事件。但是改成ArrayList就不行,为什么呢?
(我们要求不能使用datatable,因为编码时数据库字段设计对外开放了。)
<asp:Repeater ID="rptSearch" OnItemDataBound="rptSearch_ItemDataBound" runat="server" Visible="true">cs:
protected void rptSearch_ItemDataBound(object sender, RepeaterItemEventArgs e){
}ArrayList里面的对象是一个有10个属性的class。用datatable绑定时可以触发“rptSearch_ItemDataBound“事件。但是改成ArrayList就不行,为什么呢?
(我们要求不能使用datatable,因为编码时数据库字段设计对外开放了。)
是在DataBind()函数无异常完整执行完后触发。
/// EntityClass 的摘要说明
/// </summary>
[Serializable]
public class EntityClass
{
private int _id;
private string _name;
private string _sex;
private int _age; public int ID
{
set {_id=value; }
get { return _id; }
}
public string Name
{
set { _name = value; }
get { return _name; }
}
public string Sex
{
set { _sex = value; }
get { return _sex; }
}
public int Age
{
set { _age = value; }
get { return _age; }
} public EntityClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
<form id="form1" runat="server">
<asp:Repeater ID="rp" runat="server" OnItemDataBound="rp_ItemDataBound"></asp:Repeater>
</form>
using System.Collections.Generic;protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
IList<EntityClass> l = new List<EntityClass>();
EntityClass ec ;
for (int i = 0; i < 5; i++)
{
ec = new EntityClass();
ec.ID = i;
ec.Name = "Name" + i.ToString();
ec.Sex = i % 2 == 0 ? "男" : "女";
ec.Age = 20 + i;
l.Add(ec);
}
rp.DataSource = l;
rp.DataBind();
}
}
protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
EntityClass ec = e.Item.DataItem as EntityClass;
if (ec != null)
{
Literal lit = new Literal();
lit.Text = ec.Name;
e.Item.Controls.Add(lit);
}
}
}