У меня есть следующий код для привязки данных повторителя:
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
}
}
Мне нужно проверить и сравнить значение текущего элемента репитера со значением предыдущего репитера. Но DataItem предыдущего элемента rep [eater пуст.
Что я здесь сделал не так?





У вас нет доступа к DataItem, если он привязан к ретранслятору. Поэтому, если вы хотите сравнить значения, вам нужно сохранить значение в переменной, а не искать предыдущий связанный элемент.
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;
}