5

我有一个 ASP.NET 动态数据站点,该站点具有多个使用元数据构建的过滤器控件,例如:

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

如何以特定方式订购这些过滤器。看起来很随意。我可以使用元数据属性还是应该修改页面模板,这是怎么回事?

4

2 回答 2

2

好的,所以我最终只是手动重新排序自定义代码隐藏页面上的控件列表,如下所示:

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

在页面上的 3 个控件中,这会将第 2 个控件取出并将其添加到末尾。

如果我需要再次使用,我可能会创建一个方法并搜索控件名称。

这是一个粗略的解决方案,但它适合我这个临时场景。如果有人找到更好的方法,请告诉我。


好的更好的方法:

  1. 安装这个: http: //nuget.org/packages/NotAClue.DynamicData.Extensions
  2. 添加参考“使用 NotAClue.ComponentModel.DataAnnotations;” 如果您使用的是单独的实体页面
  3. 将 [Filter(Order=1)] 元数据标签添加到属性
于 2012-11-19T04:54:15.817 回答
1

最后,这很简单。我有四个过滤器,现在它们以正确的顺序出现......您需要做的就是在类元数据定义中添加一个 Display/Order 指令,例如:其中“n”是出现的顺序。

在我使用的元数据定义中(VB - 所以你需要将它转换为你的场景)..

我的文件名: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

希望能帮助到你...

于 2016-02-04T21:50:50.280 回答