[英]Why is e.Item.DataItem null on ItemDataBound event when binding an asp:net Repeater to a Collection?
[英]ASP Repeater Previous Item's DataItem in ItemDataBound is null
我有以下代码用于Repeater数据绑定:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string strPrevDisplayColumn = "";
string strCurrentDisplayColumn = "";
if (e.Item.ItemIndex != 0)
{
RepeaterItem previousRepeaterItem = rptCustSales.Items[e.Item.ItemIndex - 1];
// cannot get value
strPrevDisplayColumn = Convert.ToString(DataBinder.Eval(previousRepeaterItem.DataItem, "DisplayColumn"))
}
strCurrentDisplayColumn = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "DisplayColumn"));
if (strCurrentDisplayColumn == strPrevDisplayColumn)
{
// Do something
}
}
我需要检查并比较当前转发器项目的值和上一个转发器项目的值。 但是上一个rep [eater item]的DataItem为空。
我在这里做错了什么?
一旦将DataItem
绑定到Repeater,您将无权访问它。 因此,如果要比较值,则必须将值存储在变量中,而不要查找上一个绑定项。
int strPrevDisplayColumn = 0;
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataRowView item = e.Item.DataItem as DataRowView;
int strCurrentDisplayColumn = Convert.ToInt32(item["DisplayColumn"]);
if (strCurrentDisplayColumn == strPrevDisplayColumn)
{
// Do something
}
strPrevDisplayColumn = strCurrentDisplayColumn;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.