我编写了一个方法来搜索ListView中的给定字符串,并标记Color
找到的字符串。它工作正常,但屏幕和滚动ListView上的大量信息,有时很难找到用户正在寻找。
通常我会通过修改方法和SQL查询special
子句来创建WHERE
搜索,但它总是很麻烦,需要为每个ListView / Data提供更多的工作/代码。
我希望有一些广义搜索可以用于ListView中的所有类型的搜索,就像我现在拥有的但能够隐藏(行)不需要的内容并仅显示必要的行。当然,如果改变它的想法,它必须将旧行带回来。
我想对我来说最大的问题是如何存储所有列和数据而不会过于复杂,因为它知道它可以是3到20+列和多行。
public static void wyszukajNazweListView(ListView varListView, string varWyszukaj) {
if (varWyszukaj != "") {
foreach (ListViewItem comp in varListView.Items) {
comp.UseItemStyleForSubItems = false;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
string textToAdd2 = drv.Text;
if (textToAdd2.Length >= 1) {
if (textToAdd2.ToLower().Contains(varWyszukaj.ToLower())) {
drv.BackColor = Color.DarkOrange;
} else {
drv.BackColor = Color.White;
}
}
}
bool varColor = false;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
if (drv.BackColor == Color.DarkOrange) {
varColor = true;
break;
}
}
if (varListView.SmallImageList != null) {
if (varColor) {
comp.ImageIndex = 2;
} else {
comp.ImageIndex = -1;
}
}
}
} else {
foreach (ListViewItem comp in varListView.Items) {
comp.UseItemStyleForSubItems = false;
comp.BackColor = Color.White;
foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) {
drv.BackColor = Color.White;
comp.ImageIndex = -1;
}
}
}
}
答案 0 :(得分:1)
我可能会将其存储为DataTable
对象。 DataTable
类型允许将其行设置为隐藏(例如Visible = false
),您可以将ListView直接绑定到它。
编辑:注意到WinForms
标记。更简单:无需使用ViewState / Session进行模拟。