2015-04-13 3 views
-2

Я пытаюсь преобразовать коллекцию в DataTable, чтобы я мог привязать ее к gridview. (Если есть другой способ сделать это, я открыт для идей)Collection to DataTable

Это то, что выглядит коллекция, как:

public class CustomerCollection 
{ 
    [JsonProperty("customer")] 
    public IEnumerable<customer> Customer { get; set; } 
} 

public class customer 
{ 
    [JsonProperty("customer-name")] 
    public string strCustomerName { get; set; } 
    [JsonProperty("customer-address")] 
    public List<string> lCustomerAddress { get; set; } 
} 

Конечный результат выглядит следующим образом:

Collection

Проблемы, с которыми я сталкиваюсь, возникают при попытке привязать его к gridview. Я получаю ошибки, такие как:

Data source is an invalid type. It must be either an IListSource, IEnumerable, or IDataSource. 

И при использовании класса Helper, чтобы попытаться преобразовать его в DataTable, я получаю:

The type arguments for method 'CollectionHelper.ConvertTo<T>(System.Collections.Generic.IList<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 

ответ

1

Вы должны связать свой вид сетки к свойству Customer коллекции:

gvDisplay.DataSource = customers.Customer; 

причина, почему ваш код не работает, потому что вы вяжете его непосредственно к customers переменным, которая имеет типа CustomerCollection, который я n turn (несмотря на его название) вовсе не является коллекцией, это просто простой класс .NET с свойством Customer.

+0

Я идиот ... Спасибо! – user130622

+0

Возможно, вы, возможно, найдете лучшее имя для своих классов и свойств, поскольку они довольно вводят в заблуждение. Например, класс 'CustomerCollection' должен, вероятно, быть назван' CustomerData', а свойство 'Customer', вероятно, должно быть названо' Customers', потому что это коллекция 'customer'. –