У меня есть то, что я считаю странной проблемой с привязкой данных listview.поведение привязки ListView
Я вызываю защищенный метод на моем кодовом названии ItemHtml() - как показано ниже.
<ItemTemplate>
<div class="itemWrapper">
<%# ItemHtml() %>
</div>
</ItemTemplate>
Метод определяется следующим образом.
protected string ItemHtml()
{
string itemHtml =
StateHeaderIfNewState()
+ ActivityOwnerIfNew()
+ ActivityCategoryIfNew()
+ ActivityDescriptionHtml()
+ TaskDescriptionHtml()
+ RecordDetailsHtml();
Trace.Write("DEBUG", itemHtml);
return itemHtml;
}
Трассировка показывает «itemHtml», как следующее (я удалил фактический HTML из кода, чтобы гарантировать, что это не просто недопустимый HTML): Virginia, активность Имя владельца, Категория, активность, задачи, Подробности
Однако в источнике страницы отсутствуют первые два значения (начинается с «Категория»).
Я что-то недопонимаю о привязке списков listview? Как след может иметь одно значение, но у источника есть другое?
Ах, я не понимал, что это новый запрос, имеет смысл. Вы правы, логика ifnew вызывает это. Моя главная забота, конечно, в том, что вывод на странице не включает элементы, которые я ожидаю увидеть (Вирджиния, имя владельца активности). Я просто использовал источник просмотра для проверки вывода. Основываясь на значениях трассировки, я должен видеть результат на странице вправо? Я не знаю, почему его там нет. – Jeremy
Я установил точку останова в первых двух методах, чтобы посмотреть, что происходит в режиме отладки. – grenade
При взгляде на трассировку ближе (отладка не привела меня туда, потому что первый проход прошел, как ожидалось), каждый элемент был привязан дважды. Оказывается, я явно вызывал listView.DataBind() - не понимал, что просто установка DataSourceID косвенно вызовет DataBind(). Поскольку он был вызван дважды, логика ifNew была оценена как ложная во второй раз. – Jeremy