ListView项记录Windows窗体

时间:2014-10-02 17:11:47

标签: c# winforms listview

我有一个由数组组成的数据库,我使用ListView来显示用户希望使用此代码看到的数据,以及其他相关性较低的代码:

lsvResultados.Items.Clear();
i = 0;
do
{
    if (value == database[i,attribute])
    {
        ListViewItem Inmueble = new ListViewItem(numdatabase[i, 5].ToString());        
        Inmueble.SubItems.Add(database[i, 0]);
        Inmueble.SubItems.Add(database[i, 1]);
        Inmueble.SubItems.Add(database[i, 2]);
        Inmueble.SubItems.Add(numdatabase[i, 0].ToString());
        Inmueble.SubItems.Add(numdatabase[i, 1] + " m²");
        Inmueble.SubItems.Add(SacarPorcentaje(numdatabase[i, 1], numdatabase[i, 2]) + " m² (" + numdatabase[i, 2] + "%)");
        Inmueble.SubItems.Add("S/. " + numdatabase[i, 3]);
        Inmueble.SubItems.Add(numdatabase[i, 4].ToString());
        Inmueble.SubItems.Add(database[i, 3]);
        Inmueble.SubItems.Add(database[i, 4]);
        lsvResultados.Items.Add(Inmueble);
    }
    i++;
} while (i < TotalInmuebles);
//yes I know I´m using do-while

变量“value”是用户想要搜索的内容,此代码显示ListView控件中的搜索结果,因此当用户选择其他值时,项目将被清除并在ListView控件中显示另一组项目< / p>

我的问题是如何回到之前的结果并转到下一个结果,我的意思是如何保存ListView中的最后结果并在按下按钮时显示它们

2 个答案:

答案 0 :(得分:0)

最简单的方法是保存两个单独的SubItem列表,一个用于下一个SubItem。按下按钮后,您将清除列表视图的项目源并使用适当的项目(下一个/上一个)进行设置

理论上,理论上可以为每次从数据库返回的每个条目创建一个大列表缓存,以最大限度地减少数据库调用,但会占用大量内存。所以你必须决定哪一个更适合你

答案 1 :(得分:0)

要存储您将创建并维护

的搜索值
List<string> searchValues = new List<string>();

要存储一组结果,您需要创建并维护

List<ListViewItems> searchResult = new List<ListViewItems>();

要存储更多或所有结果集,您需要创建并维护

List<List<ListViewItems>> searchResults = new List<List<ListViewItems>>();

您可能还想要包含搜索值,而不是List<ListViewItems>创建一个 Dictionary<string, List<ListViewItems>>