2010-08-14 67 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; 
    } 
}