[英]Binding list to Datagridview issue c#
I have a list which is populated with data from a CSV file, but when I set that list to datagridview data source property, no data is shown. 我有一个列表,其中填充了CSV文件中的数据,但是当我将该列表设置为datagridview数据源属性时,则不会显示任何数据。 Can you suggest where I might have made a mistake? 您能建议我可能在哪里出错了吗?
var csvlines = File.ReadAllLines(filename); // IEnumerable<string>
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray()); // IEnumerable<string[]>
var users = csvLinesData.Select(data => new User
{
CSRName = data[6],
CallStart = data[0],
CallDuration = data[1],
RingDuration = data[2],
Direction = data[3],
IsInternal = data[4],
Continuation = data[5],
ParkTime = data[7]
}).ToList();
dataGridView1.DataSource = users;
Now I did it this way instead, and the data is showing. 现在,我改为以这种方式进行操作,并且数据正在显示。
var csvlines = File.ReadAllLines(filename); // IEnumerable<string>
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray()); // IEnumerable<string[]>
var users = csvLinesData.Select(data => new User
{
CSRName = data[12],
CallStart = data[0],
CallDuration = data[1],
RingDuration = data[2],
Direction = data[4],
IsInternal = data[8],
Continuation = data[10],
ParkTime = data[18]
}).ToList();
DataTable dt = new DataTable();
dt.Columns.Add("CSRName",typeof(string));
dt.Columns.Add("CallStart", typeof(string));
dt.Columns.Add("CallDuration", typeof(string));
dt.Columns.Add("RingDuration", typeof(string));
dt.Columns.Add("Direction", typeof(string));
dt.Columns.Add("IsInternal", typeof(string));
dt.Columns.Add("Continuation", typeof(string));
dt.Columns.Add("ParkTime", typeof(string));
DataRow dr = null;
foreach (var user in users)
{
dr = dt.NewRow();
dr["CSRName"] = user.CSRName;
dr["CallStart"] = user.CallStart;
dr["CallDuration"] = user.CallDuration;
dr["RingDuration"] = user.RingDuration;
dr["Direction"] = user.Direction;
dr["IsInternal"] = user.IsInternal;
dr["Continuation"] = user.Continuation;
dr["ParkTime"] = user.ParkTime;
dt.Rows.Add(dr);
}
//dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dt;
Bind your gridview to a BindingList, instead of List. 将您的gridview绑定到BindingList,而不是List。
var bindlist = new BindingList<User>(users);
And then create a binding source and bind that to the gridview. 然后创建一个绑定源并将其绑定到gridview。
var source = new BindingSource(bindlist, null);
dataGridView1.DataSource = source;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.