Показать список атрибутов в виде столбцов в сетке - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть список объектов, каждый из которых имеет список атрибутов. В сетке, отображающей список объектов, я должен показываться как атрибуты в виде столбцов, а не показывать их в подсетке.

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.

У меня 2 проблемы ...

  1. Компонент, который я использую для отображения сетки, использует ModelMetadataProviders.Current.GetMetadataForType((Func<object>) null, typeof (TModel)), чтобы выяснить, какие столбцы показывать. Как мне убедить провайдеров ModelMetadata включить эти дополнительные столбцы?

  2. Аналогично, код для получения значений ModelMetadataProviders.Current.GetMetadataForProperties(this.Value, typeof (TModel)), как мне убедить его отправить эти дополнительные значения?

Если я найду решение для второй проблемы, я, вероятно, найду обходной путь для первой, поскольку это всего лишь вспомогательный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...