Avatar
Matyáš Černohous (Matesak):

Zdravím, chtěl jsem se zeptat jak bych mohl udělat ukládání dat z listView, aby je aplikace po zapnutí mohla hned načíst. Napadlo mě uložit to do csv nebo do txt, ale nevím jak udělat cyklus na to uložení.
Díy

 
Odpovědět 5.8.2013 21:13
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Jan Vargovský:

Zkus serializaci, nedávno jsem na ní vydal článek. Nebo můžeš projít Items toho listViewu a ukládat je řádek po řádku někde do souboru.

 
Nahoru Odpovědět 5.8.2013 21:21
Avatar
Matyáš Černohous (Matesak):

Tak jsem se to pokusil udělat podle toho článku, ale nevím jak deserializovat do sloupců v listView. V tom článku to máš jen do listboxu.

 
Nahoru Odpovědět 6.8.2013 0:10
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Matyáš Černohous (Matesak)
Jan Vargovský:

Teď koukám co to je za komponentu vůbec. Mohl bys mi říct, co tam máš za data ? Resp. kolik sloupců, jaké datové typy to jsou.

 
Nahoru Odpovědět 6.8.2013 0:20
Avatar
Matyáš Černohous (Matesak):

mám 3 sloupce a jeden je dstring a 2 jsou double. Je to taková menší app, abych viděl jestli jsem se se zlepšil v tréninku.

 
Nahoru Odpovědět 6.8.2013 0:37
Avatar
hanse
Člen
Avatar
Odpovídá na Matyáš Černohous (Matesak)
hanse:

Ahoj, pro načtění z listViewu můžeš např. postupně projet postupně jednodnotlivý jeho řádky, v jedný aplikaci, co sem dělal před časem:

List <string[]> napln = new List<string[]>();
int i = 0;

if (vystupListView.Items.Count == 0)
    MessageBox.Show("Chybí vstupní data pro vytvoření souboru.", "Zpráva", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
else
{
    foreach (ListViewItem item in vystupListView.Items)
    {
        string[] zaznam = new string[5];
        item.Selected = true;
        //nastaveni vystupu
        zaznam[4] = MajetekID.ToString();
        for (int j = 0; j < zaznam.Length - 1; j++)
        {
            zaznam[j] = vystupListView.SelectedItems[i].SubItems[j].Text;
        }
        napln.Add(zaznam);
        i++;
    }

i když lepší řešení by bylo dát jeden řádek = jeden objekt (místo tady použitýho pole) - teda pokud ti jeden řádek odpovídá jednomu objektu :)

 
Nahoru Odpovědět 6.8.2013 9:55
Avatar
Odpovídá na hanse
Matyáš Černohous (Matesak):

Tak jsem to nakonec vyřešil tak, že jsem si data ukládal do listu a po ukončení applikace jsem je uložil do xml. A pro načítání jsem použil

listView1.Columns.Add("Den");
listView1.Columns.Add("vzdalenost");
listView1.Columns.Add("Čas");


XDocument doc = XDocument.Load("Data.xml");

foreach (var dm in doc.Descendants("trenink"))
{
    ListViewItem item = new ListViewItem( new string[]
    {
        dm.Element("den").Value,
        dm.Element("vzdalenost").Value,
        dm.Element("cas").Value,

    });
    listView1.Items.Add(item);
}

jinak díky za rady

 
Nahoru Odpovědět 6.8.2013 21:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.