如何将n个列表作为数据表的行

时间:2014-06-13 16:29:28

标签: c# list gridview dynamic datarow

我希望有一个通用方法,以实现以下目标:

我有' n' Lists的{​​{1}},我希望它们在相应的列下显示为string的行。

可能低于代码会让我的问题更清楚:

Data Table

在上面的代码中,List<string> list1 = new List<string>(); List<string> list2 = new List<string>(); List<string> list3 = new List<string>(); for (int num1 = 0; num1 < 4; num1++) { list1.Add(num1.ToString()); } for (int num2 = 4; num2 < 8; num2++) { list2.Add(num2.ToString()); } for (int num3 = 8; num3 < 12; num3++) { list3.Add(num3.ToString()); } DataTable dtTable = new DataTable(); dtTable.Columns.Add("Column1", typeof(string)); dtTable.Columns.Add("Column2", typeof(string)); dtTable.Columns.Add("Column3", typeof(string)); for (int num4 = 0; num4 < list1.Count; num4++) { dtTable.Rows.Add(list1[num4], list2[num4], list3[num4]); } GridView2.DataSource = dtTable; GridView2.DataBind(); list1list2下的项目分别作为list3Column1Column2列下的行像:

Column3

我要求有50个不同的列,最终将它们绑定到Column1 Column2 Column3 0 4 8 1 5 9 2 6 10 3 7 11

我不能手动将列表添加为行,即

GridView

如何概括上述内容以获取n个列表?

专家请帮忙。

1 个答案:

答案 0 :(得分:1)

你可以试试这个。创建一个处理所有列表的方法

private void PopulateGrid(params List<string>[] list)
{
    DataTable dtTable = new DataTable();
    for (int listIndex = 0; listIndex < list.Length; listIndex++)
    {
        dtTable.Columns.Add(string.Format("Column{0}", listIndex), typeof(string));
    }

    for (int rowIndex = 0; rowIndex < list[0].Count; rowIndex++)
    {
        DataRow dr = dtTable.NewRow();
        for (int listIndex = 0; listIndex < list.Length; listIndex++)
        {
            dr[listIndex] = list[listIndex][rowIndex];
        }
        dtTable.Rows.Add(dr);
    }
    dataGridView1.DataSource = dtTable;
}

然后创建一个主List,这样您就可以添加任意数量的列表

List<List<string>> allLists = new List<List<string>>();

/* Code to populate the lists */    

allLists.Add(list1);
allLists.Add(list2);
allLists.Add(list3);
...
allLists.Add(listn);

然后调用方法

PopulateGrid(allLists.ToArray());