2012-11-15 35 views
5

Tôi có một ASP.NET động trang web dữ liệu mà có nhiều điều khiển bộ lọc xây dựng sử dụng siêu dữ liệu như:Làm cách nào để thay đổi thứ tự các điều khiển bộ lọc động?

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

Làm thế nào để đặt hàng các bộ lọc này một cách đặc biệt. Nó có vẻ rất ngẫu nhiên. Tôi có thể sử dụng thuộc tính siêu dữ liệu hay tôi nên sửa đổi mẫu trang, tính năng gì?

Trả lời

2

OK vì vậy tôi đã kết thúc chỉ bằng tay sắp xếp lại danh sách điều khiển trên code-behind tùy chỉnh trang như vậy:

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

Trong 3 điều khiển trên trang này có thứ 2 ra và thêm nó vào cuối cùng.

Nếu tôi cần sử dụng lại, tôi có thể tạo phương thức và tìm kiếm tên kiểm soát.

Đây là giải pháp thô nhưng phù hợp với tôi trong trường hợp này. Nếu có ai tìm được cách tốt hơn thì hãy cho tôi biết.


OK cách tốt hơn:

  1. Cài đặt này: http://nuget.org/packages/NotAClue.DynamicData.Extensions
  2. Thêm tài liệu tham khảo "sử dụng NotAClue.ComponentModel.DataAnnotations;" nếu bạn đang sử dụng một trang thực thể riêng biệt
  3. Thêm [Lọc (Order = 1)] siêu dữ liệu thẻ để tính
+2

Cảm ơn bạn đã hướng dẫn về NotAClue, điều này đã giúp ích rất nhiều. –

1

Cuối cùng nó là khá đơn giản. Tôi có bốn bộ lọc và bây giờ chúng xuất hiện theo đúng thứ tự .... Tất cả những gì bạn cần làm là thêm vào chỉ thị Hiển thị/Đặt hàng vào định nghĩa siêu dữ liệu lớp, như: trong đó 'n' là thứ tự xuất hiện.

Trong định nghĩa Metadata Tôi đang sử dụng (VB - vì vậy bạn cần phải chuyển nó sang kịch bản của bạn) ..

tên tập tin của tôi: 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 

Hy vọng nó sẽ giúp ...

Các vấn đề liên quan