2012-11-15 9 views
5

Mam ASP.NET dynamicznego serwisu danych, który ma wiele kontroli filtra zbudowany przy użyciu metadanych, takich jak:Jak zmienić kolejność filtrów dynamicznych?

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

Jak mogę zamówić te filtry w sposób szczególny. Wydaje się bardzo losowy. Czy mogę użyć atrybutu metadanych, czy też powinienem zmodyfikować szablon strony, co się dzieje?

Odpowiedz

2

OK więc skończyło się tylko ręcznie porządkowania listy kontrolek po opóźnieniem kodu niestandardowego stronie tak:

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

z 3 kontrole na stronie zajmuje to 2nd out i dodaje go do końca.

Jeśli chcę użyć ponownie, mogę utworzyć metodę i wyszukać nazwę kontrolną.

To jest proste rozwiązanie, ale odpowiada temu scenariuszowi. Jeśli ktokolwiek znajdzie lepszy sposób, daj mi znać.


OK lepszy sposób:

  1. zainstalować to: http://nuget.org/packages/NotAClue.DynamicData.Extensions
  2. Dodaj odwołanie "za pomocą NotAClue.ComponentModel.DataAnnotations;" jeśli używasz oddzielną stronę jednostki
  3. Dodaj [Filtr (kolejność = 1)] tagów metadanych do atrybutów
+2

Dziękuję za instrukcje NotAClue, które pomogły niezmiernie. –

1

W końcu to był dość prosty. Mam cztery filtry, a teraz pojawiają się we właściwej kolejności .... Wszystko, co musisz zrobić, to dodać dyrektywę Display/Order do definicji metadanych klasy, na przykład: gdzie 'n' jest kolejnością pojawiania się.

W definicji Metadane używam (VB - więc trzeba go przekonwertować do scenariusza) ..

moją nazwę pliku: 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 

nadzieję, że pomoże ...

Powiązane problemy