2013-10-15 4 views
0

Мне нужно отобразить некоторые данные в таблице, но я не получаю класс/объект, чтобы сделать это в компактной структуре. Стол не должен ничего делать, просто отобразите данные. Я попытался с DataGrid, как это:Создать таблицу в компактной структуре

DataGrid table = new DataGrid(); 
table.Location = new Point(13,190); 
table.Size = new Size(221,100); 
List<int> list = new List<int>(); 
list.Add(5); 
list.Add(7); 
list.Add(9); 
table.DataSource = list; 
this.Controls.Add(table); 

Но это производить то, что кажется пустой DataGrid (одна колонка, четыре строки и один ряд есть стрелка).

ответ

1

Причины вы получаете «пустая» сетка:

To bind the DataGrid to a strongly typed array of objects, the object type must contain public properties

используется int в качестве параметра типа списка, но int не имеет просмотры Недвижимости Болгарии Недвижимости. Заменить параметр типа списка другим типом с общедоступными свойствами, и вы получите то, что хотите.

Вот, попробуйте это:

DataGrid table = new DataGrid(); 
    table.Location = new Point(0, 0); 
    table.Size = new Size(221, 100); 
    List<KeyValuePair<object, object>> list = new List<KeyValuePair<object, object>>(); 
    list.Add(new KeyValuePair<object, object>("asdfasdf", 3685745)); 
    list.Add(new KeyValuePair<object, object>("sdfgsdfgsd", 54)); 
    list.Add(new KeyValuePair<object, object>("xcvbxcvbxcvb", 341234)); 
    list.Add(new KeyValuePair<object, object>("56785678567", 56)); 
    table.DataSource = list; 
    this.Controls.Add(table); 

Если вам нужно отобразить данные, такие как Интс или строки, вы можете использовать LINQ сделать это:

table.DataSource = list.Select(item=>new {item}).ToList(); 
+0

Хорошо, но я должен получить пустой набор данных даже с этим? 'public struct Данные { public string val1; public string val2; } Таблица данных DataGrid = новая DataGrid(); Таблица. Расположение = новая точка (13,190); Таблица. Размер = новый Размер (221, 100); Список list = new Список (); Data stuff = new Data(); stuff.val1 = "3"; stuff.val2 = "A"; list.Add (материал); table.DataSource = list; this.Controls.Add (table); ' – Jonny

+0

Ничего, пропустил геттер и сеттер, извините. Спасибо, г-н – Jonny

0

Вместо List<int>, попробуйте использовать список Объекты, где Object - это класс, который вы пишете для хранения ваших данных.

Вот пример:

public class MyData { 

    public MyData() { 
    Date = DateTime.MinValue; 
    } 

    public int ID { get; set; } 

    public string Text { get; set; } 

    public DateTime Date { get; set; } 

    public override ToString() { 
    return string.Format("{0}: {1}", ID, Text); 
    } 

} 

Теперь используйте MyData класс для создания списка и заполнить его ... все, что у вас есть:

var list = new List<MyData>(); 
list.Add(new MyData() { ID = 5, Text = "5", new DateTime(2012, 5, 1) }); 
list.Add(new MyData() { ID = 7, Text = "7", new DateTime(2012, 7, 1) }); 
list.Add(new MyData() { ID = 9, Text = "9", new DateTime(2012, 9, 1) }); 
table.DataSource = list; 

И FYI: слово table не является хорошим выбором для примера DataGrid. Люди здесь не будут знать, о чем вы говорите.

Смежные вопросы