Я пытаюсь найти способ сделать что-то, что, по моему мнению, должно быть возможным, но я просто упускаю суть - так что, надеюсь, кто-то может немного подтолкнуть меня:)
Я использую привязку данных в ASP.NET (viewstate выключен - поэтому использую controlstate для некоторых вещей здесь и там) для визуализации повторителя (repeaterPriceClasses), который имеет повторитель в каждом элементе шаблона (repeaterPriceBands). В основном это отображает таблицу из некоторого текста и выпадающий список в каждой ячейке.
Я пытаюсь найти способ перечислить repeaterOuter внутри обработчика событий кнопки, чтобы получить список всех изначально связанных элементов, которые теперь получили раскрывающийся список со значением> 0, и что это значение.
public Dictionary<Price, int> SelectedPrices
{
get
{
var sel = new Dictionary<Price, int>();
foreach(RepeaterItem itemClass in repeaterPriceClasses.Items)
{
var repeaterPriceBands = itemClass.FindControl("repeaterPriceBands") as Repeater;
foreach(RepeaterItem itemBand in repeaterPriceBands.Items)
{
var context = (Price)itemBand.DataItem;
var listQty = itemBand.FindControl("listQty") as DropDownList;
if(listQty.SelectedValue.ToInt32() > 0)
{
sel.Add(context, listQty.SelectedValue.ToInt32());
}
}
}
return sel;
}
}
Теперь это не удается, потому что itemBand.DataItem всегда имеет значение null после завершения привязки данных.
Какую технику я должен использовать, чтобы обойти это?
Скрытое поле с первичными ключами в нем
(не идеально, так как может быть злоупотреблено и добавляет
вес на страницу)
Поиск от
оригинальные кэшированные данные на основе индексов
(просто кажется не правым)
или что-то
еще / лучше ...
РЕДАКТИРОВАТЬ: Есть ли еще какая-либо информация, которую я мог бы предоставить, чтобы помочь получить ответ?