Ich versuche einen Weg zu finden, etwas zu tun, das ich für möglich halte, aber ich vermisse nur den Punkt - also hoffentlich kann mir jemand einen geben Bit of a Nudge :)Abrufen von DataItem aus RepeaterItem nach Datenbindung (während eines Event-Handlers)
Ich benutze Datenbindung in ASP.NET (Viewstate ausgeschaltet - so mit Controlstate für ein paar Dinge hier und da), um einen Repeater (RepeaterPriceClasses), die eine Repeater in jedem ItemTemplate (RepeaterPriceBands). Im Grunde erstellt dies eine Tabelle aus Text und einer Dropdown-Liste in jeder Zelle.
Ich versuche einen Weg zu finden, um den RepeaterOuter im Event-Handler einer Schaltfläche aufzulisten, um mir eine Liste aller ursprünglich gebundenen Elemente zu geben, die jetzt eine Dropdown-Liste mit einem Wert von> 0 haben Was ist das für ein Wert?
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;
}
}
Jetzt schlägt fehl, weil die itemBand.DataItem immer null ist nach Datenbindung abgeschlossen ist.
Mit welcher Technik soll ich das umgehen?
verstecktes Feld mit Primärschlüssel darin (nicht ideal, da missbraucht werden kann, und fügt Gewicht auf der Seite)
Suche bei ursprünglichen Daten im Cache basierend auf Indizes (scheint nur falsch)
oder etwas sonst/besser ...?
EDIT: Gibt es noch mehr Informationen, dass ich diese beantworten helfen bieten?
Ja. Stimme zu, es ist offen für Missbrauch. Aber mit einer "Hidden" -Variable (Sie müssen es zu einem Server-Steuerelement machen oder verwenden Sie asp: Versteckt) wird die Viewstate der Seite erhöhen, so dass es ein bisschen schwer. – Kirtan
Hallo, schau dir die Antwort an ([Edit] -Tag). Ich habe es etwas verfeinert und an eine neue Methode gedacht, mit der Sie es umsetzen können. Überprüfen Sie es und sagen Sie mir, ob das besser passt oder nicht. Vielen Dank. – Kirtan