在紧凑的框架中创建一个表

时间:2013-10-15 15:17:28

标签: c# datagrid compact-framework

我需要将一些数据显示到表中,但我没有得到类/对象在紧凑框架中这样做。 该表不必执行任何操作,只需显示数据即可。 我试过像这样的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);

但是这产生了一个似乎是空的数据网格(一列,四行,一行有一个箭头)。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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;

而且,仅供参考:对于 DataGrid 实例,单词table不是一个好的选择。这里的人不会知道你在说什么。