2012-11-15 14 views
5

Ho un sito dinamico dei dati ASP.NET con più controlli di filtro costruito utilizzando i metadati quali:Come modificare l'ordine dei controlli del filtro dinamico?

[ScaffoldTable(true), MetadataType(typeof(Fees.Metadata))] 
public partial class Fees 
{ 
    public class Metadata 
    { 
     [FilterUIHint("DateRange")] 
     public object InvoiceDate; 
    } 
{ 

Come posso ordinare questi filtri in modo particolare. Sembra molto casuale. Posso usare un attributo di metadati o dovrei modificare il modello di pagina, qual è il gioco?

risposta

2

OK così ho finito appena riordinare manualmente l'elenco dei controlli sul codice sottostante pagina personalizzata in questo modo:

Control date_filter = FilterRepeater.Controls[1]; 
FilterRepeater.Controls.RemoveAt(1); 
FilterRepeater.Controls.Add(date_filter); 

di 3 controlli nella pagina questo prende il 2 ° fuori e lo aggiunge sul finale.

Se ho bisogno di usarlo di nuovo, potrei creare un metodo e cercare il nome del controllo.

Questa è una soluzione approssimativa, ma mi si addice per questo scenario unico. Se qualcuno trova un modo migliore fammi sapere.


OK modo migliore:

  1. Installare questo: http://nuget.org/packages/NotAClue.DynamicData.Extensions
  2. Aggiungi riferimento "utilizzando NotAClue.ComponentModel.DataAnnotations;" se si sta utilizzando una pagina di un'entità separata
  3. aggiungere [filtro (cod = 1)] tag di metadati agli attributi
+2

Grazie per le istruzioni NotAClue, che hanno aiutato immensamente. –

1

Alla fine è stato abbastanza semplice. Ho quattro filtri e ora vengono nel giusto ordine .... Tutto quello che devi fare è aggiungere una direttiva Display/Order nella definizione dei metadati della classe, come: dove 'n' è l'ordine di apparizione.

Nella definizione dei metadati che sto usando (VB - quindi è necessario convertirlo nel scenario) ..

mio nome del file: OpCoProductRev.vb

<MetadataType(GetType(OpCoProductRevMetadata))> 
Partial Public Class OpCoProductRev 

End Class 


Partial Public Class OpCoProductRevMetadata 

    <Required()> 
    <DisplayName("xxxx")> 
    <UIHint("xxxx")> 
    <FilterUIHint("xxxxFilter")> 
    <Display(Order:=1)> 
    Public Property xxxx As Object 

    <Required()> 
    <DisplayName("yyyyy")> 
    <UIHint("yyyyy")> 
    <FilterUIHint("yyyyyFilter")> 
    <Display(Order:=2)> 
    Public Property yyyyy As Object 

    <Required()> 
    <DisplayName("zzzzzz")> 
    <UIHint("zzzzzz")> 
    <FilterUIHint("zzzzzzFilter")> 
    <Display(Order:=3)> 
    Public Property zzzzzz As Object 

    <Required()> 
    <DisplayName("aaa")> 
    <UIHint("aaa")> 
    <FilterUIHint("aaaFilter")> 
    <Display(Order:=4)> 
    Public Property aaa As Object 


End Class 

Speranza che aiuta ...