Я попытался установить Solution suggested here, но это не сработало в моем случае. используя Page.Controls.IndexOf()
для любого из элементов моей страницы при вызове метода события ItemDataBound
, возвращает -1.Вставьте элемент управления перед другим контролем внутри события ItemDataBound
Мне нужно вставить строку на основе определенных условий для вещей, созданных моим ретранслятором данных. Вот метод:
private String lastCharacter = "";
public void users_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
HyperLink link = (HyperLink)e.Item.FindControl("micrositeLink");
Tuple<String, String> user = (Tuple<String, String>)e.Item.DataItem;
link.NavigateUrl = "/" + user.Item1;
link.Text = user.Item2;
// makes a break in the data when going from one bunch of data to another.
if (user.Item1.Length >= 2)
{
if (lastCharacter == "")
lastCharacter = user.Item1[1].ToString().ToLower();
else if (lastCharacter != user.Item1[1].ToString().ToLower())
{
HtmlGenericControl lineBreak = new HtmlGenericControl("br");
if (Page.Controls.IndexOf(link) >= 0)
Page.Controls.AddAt(Page.Controls.IndexOf(link), lineBreak);
lastCharacter = user.Item1[1].ToString().ToLower();
}
}
}
Связанные данные - это список пользователей в моей системе с именами, начинающимися с конкретной буквы. Моя цель заключается в дальнейшем разделении этих данных на разрыв строки между группами данных, имеющих одну и ту же вторую букву. Например:
AaPerson Aarad AaStuff
Aathing
AbItem AbStuff
Acan Achandle
Для меня, вставляя разрыв строки перед элементами, где вторые изменения букв является очевидным решением, но и другие предложения, которые также оценены.
Почему вы литья 'e.Item.DataItem' типа' Tuple'? –
Это базовый dataItem: 'List> users = getUsers (Request.QueryString [" letter "]); micrositeList.DataSource = пользователи; micrositeList.DataBind(); 'Причина, по которой я использую Tuple, а не что-то напечатанное, заключается в том, что типизированные вещи создают проблемы с' HttpRuntime.Cache'. –
Oliver
Вы рассматривали использование 'DataBinder.Eval' в событии' ItemDataBound' вместо этого? –