如何选择所有关于所选项目的信息,不仅仅是第一列而是全部?
对于第一栏我只需要:
showModal(e) {
if (!e) {
e = window.event;
}
e.preventDefault();
const tgt = e.target || e.srcElement;
const url = tgt.getAttribute('href');
console.log('url', url, tgt);
const redirectTo = url.substring(url.lastIndexOf('/') + 1);
this.setState({ show: true });
this.context.router.transitionTo(redirectTo);
}
可以说下一列是:ListView.Items.AddRange(ListData
.Where(i => string.IsNullOrEmpty(searchBox.Text) || i.ID.StartsWith(searchBox.Text))
.Select(c => new ListViewItem(c.ID))
.ToArray());
,Name
我知道我必须使用Linq片段,它看起来像:
LastName
提前致谢!
答案 0 :(得分:1)
只需在.Select()
方法行中初始化所需的所有属性:
ListView.Items.AddRange(ListData.Where(i =>
string.IsNullOrEmpty(searchBox.Text)
|| i.ID.StartsWith(searchBox.Text))
.Select(c => new ListViewItem // this part
{
Name = c.ID.ToString(),
Text = c.Name + " " + c.LastName
}).ToArray());
Maby你想要填充不同的属性,所以请填写freee以根据需要更改此部分。
答案 1 :(得分:1)
好吧,ListViewItem
类有22个(!)constructor overloads,所以你可以使用任何支持传递string[] items
的类,例如this one:
.Select(c => new ListViewItem(new string[] { c.ID, c.Name, c.LastName }))
答案 2 :(得分:1)
您可以使用接受字符串数组的ListViewItem ctor(其中第一个后面的元素是子项)
假设您的类具有属性LastName
和Name
ListView.Items.AddRange(ListData.Where(i =>
string.IsNullOrEmpty(searchBox.Text)
|| i.ID.StartsWith(searchBox.Text))
.Select(c => new ListViewItem // this part
(
new string[]{c.ID, c.Name, c.LastName}
)).ToArray());
如果创建单个ListViewItem变得更复杂,请考虑使用函数:
ListView.Items.AddRange(ListData.Where(i =>
string.IsNullOrEmpty(searchBox.Text)
|| i.ID.StartsWith(searchBox.Text))
.Select(c => CreateListViewItemFromElement(c)).ToArray());
private ListViewItem CreateListViewItemFromElement(MyClass element)
{
// handle the element to create a "complete" ListViewItem with subitems
ListViewItem item = new ListViewItem(c.ID);
....
return item;
}
(实际上,我会在每种情况下使用后者,它对我来说更具可读性)