2010-08-14 88 views
0

我在c#中的项目包含dataGridView,并且我有一个包含数据的对象。数据网格视图 - 绑定列到列表

public class Data 
{ 
    public List<string> list {get;set;} 

} 

数据在程序启动时被初始化,列表的长度可以改变。 我想要绑定gridView的对象,当gridView显示gridview中的每一列都必须列出像这样的数据对象:

如果列表计数= 3,比我想GridView包含3列 - column0绑定到列表[ 0],column01绑定到列表[1],依此类推。

我认为我需要绑定表格加载时的gridView,但我怎么能在我的代码中做到这一点?

回答

0
<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="true" > 
</asp:GridView> 

private static Random _rnd = new Random(DateTime.Now.Millisecond); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     var columns = _rnd.Next(3, 10); 
     var data = new { list = Enumerable.Range(1, columns).ToList() }; 

     GridView1.DataSource = data.list.Pivot(); 
     GridView1.DataBind(); 
    } 
} 


public static class Extensions 
{ 
    public static DataTable Pivot<T>(this IEnumerable<T> list) 
    { 
     if (list == null) 
      throw new ArgumentNullException("list"); 

     DataTable result = new DataTable(); 
     for (int index = 0; index < list.Count(); index++) 
     { 
      DataColumn column = new DataColumn(string.Format("Column{0}", index), typeof(T)); 
      result.Columns.Add(column); 
     } 

     var dataRow = result.NewRow().ItemArray = list.Select(item => (object)item).ToArray(); 
     result.Rows.Add(dataRow); 

     return result; 
    } 
}