我正在尝试使用一些示例数据填充Windows窗体中的listview。我有一个属性如下的事务列表:
public float NetAmount { get; set; }
public DateTime TimeStamp { get; set; }
public string TransactionID { get; set; }
这是迄今为止样本数据如何放入列表视图的方式,如下所示:
private void seedListView(List<Transactions> list)
{
List<string[]> _nesto = new List<string[]>();
//Define
var data = new[]
{
new []{"Lollipop", "392", "0.2"},
new []{"KitKat", "518", "26.0"},
new []{"Ice cream sandwich", "237", "9.0"},
new []{"Jelly Bean", "375", "0.0"},
new []{"Honeycomb", "408", "3.2"}
};
//Add
foreach (string[] version in data)
{
var item = new ListViewItem(version);
materialListView1.Items.Add(item);
}
}
使用数据作为listview的数据源,我得到以下输出:
Lollipop 392 0.2
KitKat 518 26.2
HoneyComb 408 3.2
现在我需要做同样的事情,但是我想让listview填充列表中我传递给函数的项目,如下所示:
15,2 2016-02-01 125215FESSEFOKP
19.2 2016-02-01 125215FESSEFOKP
13.6 2016-02-01 125215FESSEFOKP
15.9 2016-02-01 125215FESSEFOKP
如果15.2是净额,2016-02-01是时间戳,125215FESSEFOKP是TransactionID ......
我怎么能动态地这样做?
编辑:我这样做了:
List<string[][]> _nesto = new List<string[][]>();
string[][] data = null;
foreach (var item in list)
{
data = new[] { new[] { item.NetAmount.ToString(), item.TimeStamp.ToString(), item.TransactionID.ToString() } };
_nesto.Add(data);
}
ListViewItem it;
foreach (var item in _nesto)
{
foreach (string[] version in item)
{
it = new ListViewItem(version);
materialListView1.Items.Add(it);
}
}
有没有人有比这更清洁的解决方案?这似乎是我为这样一个简单的事情编写的太多代码:D
答案 0 :(得分:1)
我认为这是做到这一点的方法:
它应该相应地填充你的列表视图。这是首选方式(至少对我而言),因为您只需添加和删除列表中的项目,您就不需要经常运行foreach语句来确保列表视图中的数据正确。
答案 1 :(得分:1)
我会这样做
foreach (Transaction t in list)
{
var item = new ListViewItem(new string[]{
t.NetAmount.ToString("N1"),
t.TimeStamp.ToString("d"),
t.TransactionID });
materialListView1.Items.Add(item);
}
答案 2 :(得分:1)
这就是我的意思:
object[] data = new object[]
{
new object []{15.2 , 2016-02-01, "125215FESSEFOKP"},
new object []{19.2, 2016-02-01, "125215FESSEFOKP"},
new object []{19.2, 2016-02-01, "125215FESSEFOKP"},
new object []{19.2, 2016-02-01, "125215FESSEFOKP"}
};
You won't be able to use anonymous type in this case.