2012-11-15 11 views
5

Ich habe eine ASP.NET Dynamic Data-Website, die mehrere Filtersteuerung gebaut unter Verwendung von Metadaten, zB:Wie ändert man die Reihenfolge der dynamischen Filterkontrollen?

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

Wie kann ich diese Filter in einer bestimmten Art und Weise bestellen. Es scheint sehr zufällig zu sein. Kann ich ein Metadatenattribut verwenden oder sollte ich die Seitenvorlage ändern, was ist los?

Antwort

2

OK so landete ich Neuordnen des Steuerungsliste nur manuell über dem benutzerdefinierten Code-Behind-Seite wie folgt:

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

von 3 Steuerelemente auf der Seite nimmt dies die zweite aus und fügt sie an das Ende.

Wenn ich erneut verwenden muss, kann ich eine Methode erstellen und auf Steuerelementname suchen.

Dies ist eine grobe Lösung, aber es passt mir für dieses einmalige Szenario. Wenn jemand einen besseren Weg findet, lass es mich wissen.


OK besserer Weg:

  1. installieren: http://nuget.org/packages/NotAClue.DynamicData.Extensions
  2. hinzufügen Referenz "NotAClue.ComponentModel.DataAnnotations verwendet;" wenn Sie eine separate Einheit Seite verwenden
  3. hinzufügen [Filter (Order = 1)] Metadaten-Tags Attribute
+2

Vielen Dank für die NotAclue Anweisungen, die immens geholfen haben. –

1

am Ende ist es ganz einfach war. Ich habe vier Filter und jetzt kommen sie in der richtigen Reihenfolge .... Alles, was Sie tun müssen, ist eine Anzeige/Order-Direktive in die Klassen-Metadatendefinition einzufügen, wie: wo 'n' ist die Reihenfolge der Erscheinung.

im Metadaten Definition Ich verwende (VB - so müssen Sie es Ihrem Szenario konvertieren) ..

Meine Dateiname: 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 

Hoffe, es hilft ...