将属性列表显示为网格中的列

时间:2011-11-03 12:09:46

标签: model-view-controller jqgrid

我有一个对象列表,每个对象都有一个属性列表。 在显示对象列表的网格中,我将属性显示为列,而不是在子网格中显示它们。

public class MyObject {
   public int Id {get; set;}
   public string Name {get; set;}
   public IEnumerable<MyAttribute> Attributes {get; set;}
}
public class MyAttribute {
   public int Id {get; set;}
   public string Key {get; set;}
   public string Value {get; set;}
}

所以我拥有的是IEnumerable<MyObject>。例如

  var lst = new[]
  {
     new MyObject
        {
           Id = 1,
           Name = "o1",
           Attributes = new[]
                          {
                             new MyAttribute
                                {
                                   Id = 1,
                                   Key = "k",
                                   Value = "v1"
                                },
                             new MyAttribute
                                {
                                   Id = 2,
                                   Key = "x",
                                   Value = "v2"
                                },
                          }
        },
     new MyObject
        {
           Id = 2,
           Name = "o2",
           Attributes = new[]
                          {
                             new MyAttribute
                                {
                                   Id = 3,
                                   Key = "k",
                                   Value = "v11"
                                },
                             new MyAttribute
                                {
                                   Id = 4,
                                   Key = "x",
                                   Value = "v22"
                                },
                          }
        }
  };

我想最终得到的网格将有4列,Id,Name,k,x。

我有两个问题......

  1. 我用来显示网格的组件使用ModelMetadataProviders.Current.GetMetadataForType((Func<object>) null, typeof (TModel))来确定要显示的列。如何说服ModelMetadataProviders包含这些额外的列?

  2. 类似地,获取值ModelMetadataProviders.Current.GetMetadataForProperties(this.Value, typeof (TModel))的代码,我如何说服它发送这些额外的值?

  3. 如果我能找到第二个问题的解决方案,我可能会找到第一个问题的解决方法,因为那只是一个辅助类。

0 个答案:

没有答案