Kann jemand versuchen, die beste Ursache der Aktion zu empfehlen, um die Anfrage unten zu lösen:.Net Repeater entspricht einem einzelnen Objekt?
Ich habe eine Reihe von erweiterten Klassen mit der Repeater-Klasse als Basis erstellt und lieben die Flexibilität, die Leichtigkeit und die Ergebnisse dabei . Ich möchte jetzt ein ähnliches benutzerdefiniertes Websteuerelement für ein einzelnes Objekt erstellen (d. H. Die DataSource implementiert keine IListSource oder IEnumerable). Ich habe die Struktur dessen geschaffen, was ich erreichen möchte, indem ich den Repeater erweitere und dann die Datenquelle unter Verwendung einer Liste von 1 Element, um das Objekt zu halten, und dann Datenbindung einstelle.
e.g a rough example:
Dim oObj as New MyObject(1)
Dim gl As New Generic.List(of MyObiect)()
gl.Add(oObj)
rpt.DataSource = gl
rpt.DataBind()
Das um Dinge wie ein kleiner Hack scheint, was ich ist folgendes zu tun in der Lage sein würden:
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
ich in der Lage möchte diese individuelle Steuerung mit verschiedenen Variablen definieren und Eigenschaften, die folgende Art von Layout ermöglichen das Ergebnis davon:
<My:ObjControl ID="frm" runat="server">
<Tabs>
<My:Tab name="Details">
<Items>
<My:Item Type="Text" Label="First Name" Property="FirstName" />
<My:Item Type="Text" Label="Last Name" Property="LastName" />
<My:Item Type="Text" Label="Title" Property="Title" />
</Items>
</Tab>
<My:Tab name="Address">
<Items>
<My:Item Type="Text" Label="Address 1" Property="Address1" />
<My:Item Type="Text" Label="Address 2" Property="Address2" />
<My:Item Type="Text" Label="Address 3" Property="Address3" />
</Items>
</Tab>
</Tabs>
</My:ObjControl>
Diese Implementierung WebForms nehmen hat Platz verwenden, obwohl es wäre MVC wie mit dem idealen Ansatz sieht unter Berücksichtigung des oben genannten. Auf diese Weise möchte ich ein flexibles WebControl erstellen, das Reflektion verwendet (das für alle Klassen verwendet werden kann, die eine bestimmte Schnittstelle implementieren), die bei jedem Bedarf das erforderliche Formular mit nur drei Zeilen Code (oben) generiert.
Soll ich einfach eine Eigenschaft zu einem benutzerdefinierten Repeater (DataObject) hinzufügen, der ein Objekt übernimmt und die DataSource entsprechend einstellt und so Zeit spart? Oder gibt es einen besseren Weg?
Hoffe das alles macht Sinn!
Cheers, Steve
Ok, es ist sehr schwer, über den Gedankenprozess hinwegzukommen, aber was meine Kontrolle erreichen wird, ist eine Seite mit zwei li Tabs 'Details' und 'Adresse', zwischen denen Tabs eingefügt werden können Formularelemente, die das Objekt aktualisieren können. Was Sie gezeigt haben, hat den Punkt völlig verpasst - wahrscheinlich mein Fehler in der Formulierung der Frage. Natürlich in Ihrem könnte ich einfach tun: Eval ("FirstName"). – stibstibstib
Immer noch zu viel Aufwand, um so viel Arbeit für ein paar Tabs zu tun, und ich empfehle immer noch einen Repeater. Ja ich verstehe deine Frage nicht vollständig. Ich benutze nicht Eval, DataBinder.Eval ist die 1.0 Möglichkeit, es zu tun, und ich sehe keinen Grund, sich noch zu ändern, Gewohnheit. –