0

我需要将一些数据显示到表格中,但在紧凑的框架中我没有得到这样的类/对象。该表不必做任何事情,只需显示数据即可。我尝试过这样的数据网格:

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);

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

4

2 回答 2

1

你得到“空”网格的原因是:

要将 DataGrid 绑定到对象的强类型数组,对象类型必须包含公共属性

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();
于 2013-10-15T15:55:33.517 回答
0

而不是List<int>,尝试使用对象列表,其中对象是您编写的用于存储数据的类。

这是一个例子:

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不是一个好的选择。这里的人不会知道你在说什么。

于 2013-10-15T23:35:19.077 回答