2010-08-14 7 views
0

Mon projet dans C# contient dataGridView et j'ai un objet contenant des données. Les données sont initialisées au démarrage du programme et la longueur de la liste peut changer. Je veux lier le gridView à l'objet que quand gridView montrer chaque colonne dans gridview est lié à la liste dans l'objet de données comme ceci:Affichage de la grille de données - Colonnes de liaison à la liste

si le nombre de liste = 3, que je veux le gridView contient 3 colonnes - column0 lient à la liste [ 0], colonne01 lie à la liste [1], et ainsi de suite.

Je pense que j'ai besoin de lier gridView lorsque le formulaire est en cours de chargement, mais comment puis-je faire cela dans mon code?

Répondre

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