简体   繁体   English

数据网格视图-将列绑定到列表

[英]Data Grid View — binding columns to list

My project in c# contains dataGridView and I have a object containing data. 我在C#中的项目包含dataGridView,并且我有一个包含数据的对象。

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

}

The data is initialized at program startup and the length of list can change. 数据在程序启动时初始化,并且列表长度可以更改。 I want to bind the gridView to object that when gridView show each columns in gridview is bound to list in data object like this: 我想将gridView绑定到当gridView显示gridview中的每一列都绑定到数据对象中的对象时,如下所示:

if list count = 3 , than i want gridView contains 3 columns - column0 bind to list[0], column01 bind to list[1], and so on. 如果列表计数= 3,那么我希望gridView包含3列-column0绑定到list [0],column01绑定到list [1],依此类推。

i think that i need to bind gridView when form is loading , but how can i do this in my code? 我认为在表单加载时需要绑定gridView,但是如何在我的代码中这样做呢?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM