Wie bewahren Sie den Wert von data-binding-Ausdrucks in der Variablen

Muss ich den Zugriff auf den Wert einer gebundenen Element mehrfach in einer Vorlage. Jetzt meine ListView-template sieht wie folgt aus:

<asp:ListView ID="ListView1" runat="server" ItemPlaceholderID="plc"><br/>
 <ItemTemplate><br/>
  <input type="radio" class="myrating<%# DataBinder.Eval(Container.DataItem, "Day")%>" value="3" /><br/>
  <input type="radio" class="myrating<%# DataBinder.Eval(Container.DataItem, "Day")%>" value="4" /><br/>
    </ItemTemplate><br/>
    <LayoutTemplate><br/>
        <div id="plc" runat="server"><br/>
        </div><br/>
    </LayoutTemplate><br/>
    <EmptyDataTemplate><br/>
        No data</EmptyDataTemplate><br/>
</asp:ListView><br/>

Unter bestimmten Bedingungen, die ich möglicherweise Dutzende von radio-Taste, so dass immer wieder ruft <%# DataBinder.Eval(Container.DataItem, "Day")%> zu sein scheint ineffizient.

Möchte ich weisen Sie den Wert des Ausdrucks einer Variablen zu, und verwenden Sie dann diese variable anstelle also meine Vorlage Aussehen würde, so etwas wie dieses

<ItemTemplate><br />
<%String ClassName = "myrating" + <%# DataBinder.Eval(Container.DataItem, "Day")%><br />
  <input type="radio" class="<%=ClassName %>" value="3" /><br />
  <input type="radio" class="<%="ClassName" value="4" /><br />
    </ItemTemplate><br />

Dieses Beispiel kann nicht kompiliert werden, aber ich hoffe, Sie bekommen die Idee.

  • Gibt es spezifische performance-Probleme oder haben Sie gerade denken, tun, eine Eval-immer wieder, ist ein problem? Sie könnten immer die Klasse der radio-buttons in das ItemDataBound-Ereignis der Listenansicht.
  • Ich habe nicht profiliert es noch nicht, aber ich denke, den Aufruf von Eval, immer wieder auf den gleichen Wert wird verschwenderisch sein und auch schwieriger zu pflegen. Mit ItemDataBound funktionieren würde, aber es wäre schön, wenn es ware eine einfachere Lösung.
  • Ich mache etwas ähnliches, und ja... tut sich eine Eval-immer wieder, ist ein GROßES problem (für meine Anwendung) unter Berücksichtigung der Datenbank-hits beteiligt.
InformationsquelleAutor user46703 | 2009-07-13
Schreibe einen Kommentar