Qualcuno potrebbe provare a consigliare la migliore causa di azione per risolvere la richiesta di seguito:. Equivalente ripetitore netto per un singolo oggetto?
Ho creato un numero di classi estese utilizzando la classe Repeater come base e amo la flessibilità, la facilità e i risultati di questa operazione . Quello che voglio fare ora è creare un controllo Web personalizzato simile per un singolo oggetto (vale a dire che DataSource non implementa un IListSource o IEnumerable). Ho creato la struttura di ciò che sto cercando di ottenere estendendo il ripetitore e quindi quando si imposta l'origine dati utilizzando un elenco di 1 elemento per contenere l'oggetto e quindi l'associazione dati.
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()
Questo sembra come un piccolo trucco intorno alle cose, quello che vorrei essere in grado di fare è la seguente:
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
Voglio poter definire questo controllo personalizzato con diverse variabili e proprietà, il cui risultato consentirà il seguente tipo di layout:
<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>
Questa implementazione deve avvenire utilizzando WebForms, anche se sembra usando MVC sarebbe il metodo ideale considerando quanto sopra. In questo modo, desidero creare un WebControl flessibile che utilizza la reflection (che può essere utilizzata per tutte le classi che implementano un'interfaccia specifica) che genererà il modulo richiesto con solo le tre righe di codice dietro (sopra) ogni volta che è necessario.
Devo solo aggiungere una proprietà a un ripetitore personalizzato (DataObject) che prende un oggetto e imposta DataSource di conseguenza e risparmiando tempo? O c'è un modo migliore?
Spero che tutto abbia senso!
Cheers, Steve
Ok, è molto difficile superare il processo del pensiero, ma ciò che il mio controllo raggiungerà è produrre una pagina con due linguette "Dettagli" e "Indirizzo" che possono essere compressi tra e su ognuno di essi avrà etichette e corrispondenza forma gli elementi che possono aggiornare l'oggetto. Ciò che hai mostrato ha mancato completamente il punto, probabilmente è colpa mia nella formulazione della domanda. Naturalmente nella tua e.g potevo solo fare: Eval ("FirstName"). – stibstibstib
Ancora eccessivo per fare questo lavoro molto per un paio di schede e consiglio ancora un ripetitore. Sì, non capisco la tua domanda completamente. Non uso Eval, DataBinder.Eval è il modo 1.0 per farlo e non vedo alcun motivo per cambiare ancora, Habit. –