繁体   English   中英

ItemDataBound中的ASP Repeater上一个项目的DataItem为null

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM