您可以创建一个提供DataView的方法。
说你有这样的事情:
public class message {
private string subject { get; set; }
private string message { get; set; }
private string otherValue { get; set; }
}
然后你就可以像这样添加一个方法来消息类:
public static DataView GetDataGridList(List<message> lstMessages) {
DataTable dt = new DataTable();
// Add the columns here for whatever properties you want
dt.Columns.Add("subject");
dt.Columns.Add("message");
foreach (message msg in lstMessages) {
DataRow dr = dt.NewRow(); // I think that's the call, I'm doing this off the top of my head, sorry.
dr["subject"] = msg.subject;
dr["message"] = msg.message;
}
return (dt.DefaultView);
}
然后,当你创建你的DataGrid,只要绑定像这样:
List<message> lstMessages = new List<message>();
// Populate the list however you want here.
DataGrid dg = new DataGrid();
dg.DataSource = message.GetDataGridList(List<message>);
你应该很好走。只要记住如果你改变了你想要的属性,把列添加到DataTable中,然后在foreach循环中。
如果你简单地说设置'DataGridView.AutoGenerateColumns = false;'并提供了链接或任何其他额外的细节,那就简单多了。谢谢。 – 2012-07-18 19:36:35
并不意味着冒犯或以过多的信息将你埋没于必要的信息,但我确实认为指出如果你想要一个精简的,响应式的应用程序,那么sql语句中的经济是需要谨慎的。你可以做到这一点,并且在想要缩小数据集的情况下,通过使用匿名类保持传统的体积较大的课程。 @Andreas Niedermair暗示了这一点。 – GrayFox374 2012-07-18 20:04:13