Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Matyáš Černohous:5.8.2013 21:13

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ý
Tvůrce
Avatar
Odpovídá na Matyáš Černohous
Jan Vargovský:5.8.2013 21:21

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:6.8.2013 0:10

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ý
Tvůrce
Avatar
Odpovídá na Matyáš Černohous
Jan Vargovský:6.8.2013 0:20

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:6.8.2013 0:37

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
Odpovídá na Matyáš Černohous
Neaktivní uživatel:6.8.2013 9:55

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Matyáš Černohous:6.8.2013 21:23

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.