Načíst data do DataGridView ze souboru – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Načíst data do DataGridView ze souboru – .NET – Fórum – Programujte.comNačíst data do DataGridView ze souboru – .NET – Fórum – Programujte.com

 

itlady0
Newbie
27. 12. 2021   #1
-
0
-

Ahoj, v aplikaci se snažím ukládat data vložená uživatelem do DataGridView a současně do souboru na disku (jednoduchá databáze), Podle videa zde:

https://www.youtube.com/watch?v=5reY435GWDI&list=PL-EU0JUF-XD1saII7gONUxMIbk13XkmCV&index=41

jsem použila serializaci a deserializaci, to funguje, jen nevím, nahrát data z vytvořené databáze zpět do DataGridView. Při novém spuštění aplikace nemám nahraná žádná data. Deserializovaná data jsou typu List. 

Zatím můj kod vypadá takto:

public partial class MainForm : Form
	{
		public UserInput UserInput;
		public List<UserInput> ui = new List<UserInput>();
		ObjectToSerialize objectToSerialize = new ObjectToSerialize();
		Serializer serializer = new Serializer();
		
		public MainForm()
		{
			InitializeComponent();
		}
		      
        private void MainForm_Load(object sender, EventArgs e)
        {
			UlozitDB();
			NacistDB();
		}

		public void UlozitDB()
        {
			objectToSerialize.Ui = ui;
			serializer.SerializeObject("database.txt", objectToSerialize);
        }

		public void NacistDB()
		{
			ui = objectToSerialize.Ui;
			objectToSerialize = serializer.DeSerializeObject("database.txt");
			MessageBox.Show(ui.ToString());
		}
			


		public void InfoItemClick(object sender, EventArgs e)
		{
			Form About = new About();
			About.Show();
		}

        private void New_Click(object sender, EventArgs e)
        {
            using (NewPos newPos = new NewPos() { UserInput = new UserInput() })
            {
                if (newPos.ShowDialog() == DialogResult.OK)
                    userInputBindingSource.Add(newPos.UserInput);
            }
        }

    }
}
public partial class NewPos : Form
	{
		public UserInput UserInput { get; set; }
		public List<UserInput> ui = new List<UserInput>();

		public NewPos()
		{
			InitializeComponent();
		}

        private void NewPos_Load(object sender, EventArgs e)
        {

        }

        private void BtnAdd_Click(object sender, EventArgs e)
        {
			UserInput.CisloPosudku = Vloz_cisloP.Text;
			UserInput.Specifikace = Vloz_spec.Text;
			UserInput.Obvineny = Vloz_obvineny.Text;
			UserInput.CTS =	Vloz_CTS.Text;
			UserInput.DatumOpatreni = dateTimePicker1.Text;

			//.Add(new UserInput(UserInput.CisloPosudku, UserInput.Specifikace, UserInput.Obvineny, UserInput.CTS, UserInput.DatumOpatreni));
		}

    }
[Serializable()]
	public class UserInput : ISerializable
	{
		public string CisloPosudku { get; set; }
		public string Specifikace { get; set; }
		public string Obvineny { get; set; }
		public string CTS { get; set; }
		public string DatumOpatreni { get; set; }
				
		public UserInput()
        {
        }

		public UserInput(string cisloPosudku, string specifikace, string obvineny, string cts, string datumOpatreni)
        {
			this.CisloPosudku = cisloPosudku;
			this.Specifikace = specifikace;
			this.Obvineny = obvineny;
			this.CTS = cts;
			this.DatumOpatreni = datumOpatreni;

		}

		public UserInput(SerializationInfo info, StreamingContext ctxt)
        {
			this.CisloPosudku = (string)info.GetValue("CisloPosudku", typeof(string));
			this.Specifikace = (string)info.GetValue("Specifikace", typeof(string));
			this.Obvineny = (string)info.GetValue("Obvineny", typeof (string));
			this.CTS = (string)info.GetValue("CTS", typeof(string));
			this.DatumOpatreni = (string)info.GetValue("DatumOpatreni", typeof(string));
		}

		public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
			info.AddValue("CisloPosudku", this.CisloPosudku);
			info.AddValue("Specifikace", this.Specifikace);
			info.AddValue("Obvineny", this.Obvineny);
			info.AddValue("CTS", this.CTS);
			info.AddValue("DatumOpatreni", this.DatumOpatreni);
        }
    }
Nahlásit jako SPAM
IP: 212.102.38.–
gna
~ Anonymní uživatel
1853 příspěvků
27. 12. 2021   #2
-
0
-

MainForm_Load máš uložení a pak načtení, takže ti to pravděpodobně vždycky nejdříve přepíše soubor prázdným listem.

NacistDB pravděpodobně bude potřeba nejdříve volat DeSerializeObject a až pak z něj vytáhnout .Ui.

Nahlásit jako SPAM
IP: 213.211.51.–
itlady0
Newbie
27. 12. 2021   #3
-
0
-

Že mi to přepisuje, to mě taky napadlo. Serializace / deserializace proběhne. Přemýšlím, jak ta data napojit do userInputBindingSource. ...

Nahlásit jako SPAM
IP: 212.102.38.–
gna
~ Anonymní uživatel
1853 příspěvků
28. 12. 2021   #4
-
0
-

Ta metoda New_Click vypadá, že by mohla fungovat. Jaký je rozdíl v tom, jestli máš data z dialogu, nebo ze souboru?

Nahlásit jako SPAM
IP: 213.211.51.–
itlady0
Newbie
28. 12. 2021   #5
-
0
-

Vypadá, ale nefunguje. Jednou program spustím - nahrnu data, vše OK, uloží se databáze. Podruhý spustím - v aplikaci žádná data načtená.

Nahlásit jako SPAM
IP: 212.102.38.–
gna
~ Anonymní uživatel
1853 příspěvků
28. 12. 2021   #6
-
0
-

Pokud ti to při startu automaticky uloží prázdný list, tak to pak i načte prázdný list. To už jsem psal.

Do toho gridu/bindingu už přidáváš data v metodě New_Click. Předpokládám, že ta funguje, takže stejně ho můžeš naplnit i při načtení dat ze souboru. Ale samo se to neudělá.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý