我有动态列表项。此列表不是静态的。鉴于必要性,我将至少有一个/多个列表。我需要的是,我必须将该列表分成至少两个独特的记录。我可以参加。但是,我需要将此列表绑定到datagridview。
这是我的代码:我有两个列表,
List<string> list1=new List<string>();
list1.add("THE BOOK OF BURGER");
list1.add("The Hogwarts Library");
list1.add("NEW Day in the Life of a Farmer");
List<string> list2=new List<string>();
list2.add("$200");
list2.add("$150");
list2.add("$170");
.....
list3,
list4.. etc..
我有Datagridview。我想将其绑定到数据网格视图中,
如何将数据源添加到此datagridview?我厌倦了把它包含在数据表中。无论如何,我无法做到这一点。任何帮助都会得到真正的重视。
答案 0 :(得分:4)
您可以在BooK
中创建List<Book>
类并对数据进行整形,并将网格绑定到列表中。
图书强>
public class Book
{
public string Title { get; set; }
public string Price { get; set; }
}
将数据绑定到DataGridView
var list = new List<Book>();
for (int i = 0; i < list1.Count; i++)
{
list.Add(new Book()
{
Title = list1[i],
Price = list2[i]
});
}
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.DataSource = list;
根据评论,我猜您有一个Dictionary<String, List<String>>
,并且您希望将它们动态添加到网格中。
我想你会使用字典的键作为列的标题文本。
//Add your lists to the dictionary
var dictionary = new Dictionary<string, List<string>>();
dictionary.Add("list1", list1);
dictionary.Add("list2", list2);
// And some othet lists ....
//Calculate the count of rows.
int rowCount = dictionary.Cast<KeyValuePair<string, List<string>>>()
.Select(x=>x.Value.Count).Max();
//Create the data table and for each table, add a column
var dataTable = new DataTable();
foreach (var key in dictionary.Keys)
{
dataTable.Columns.Add(key);
}
//Add items of each list to the columns of rows of table
for (int i = 0; i < rowCount; i++)
{
var row = dataTable.Rows.Add();
foreach (var key in dictionary.Keys)
{
try
{
row[key] = dictionary[key][i];
}
catch
{
row[key] = null;
}
}
}
//Show data in grid
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.DataSource = dataTable;
以下是结果:
答案 1 :(得分:0)
我猜您需要在其中生成DataTable
和add
数据。
如果您拥有Lists
,则可以List
为column
DataTable
List
,row
中添加的数据为{{1}那个column
。
DataTable dt = new DataTable();
dt.Columns.Add("Title");
DataRow dr = dt.NewRow();
dr["Title"] = "THE BOOK OF BURGER";
dt.Rows.Add(dr);
dt.Columns.Add("Price");
DataRow dr = dt.NewRow();
dr["Price"] = "$200";
dt.Rows.Add(dr);
grdBooks.DataSource = dt;
grdBooks.DataBind();
如果您收到List
,可以loop
通过list
在Rows
DataTable
中添加数据。