Delegate refresh data gridu z jineho Formu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Delegate refresh data gridu z jineho Formu – .NET – Fórum – Programujte.comDelegate refresh data gridu z jineho Formu – .NET – Fórum – Programujte.com

 

neumel
~ Anonymní uživatel
4 příspěvky
6. 11. 2012   #1
-
0
-

Pekny podvecer, mam aplikaci kde mam v hlavnim Formu DataGridView. Pro pridani noveho zaznamu se otevre Form jako dialog, ve kterem se prida polozka . Po pridani polozky by se mela objevit v DataGridu umistenenm na hlavnim Formu. Form, ve kterem probiha zadani se po ulozeni nezavira, ale zustava otevren pro vlozeni dalsi polozky. Tedy jde o to, aby uzivatel videl jiz pridanou polozku v DataGridu. Precetl jsem si nejake materialy a zjistil, ze lze tuto "komunikaci" resit pomoci delegatu. 

Vytvoril sem v hlavnim Formu primo pod urovni jmeneho prostoru delegata

namespace WinApplication
{
    delegate void delegateRefreshDataGridView();
.
.
.
    public void refDGV()
    {
        LoadData(); //naplni datagrid
    }
}

A nasledne sem se pokousel ve Formu slouzicimu pro vlozeni nove polozky zavolat funkci pro refresh DataGridu. Bohuzel nedobral jsem se pozadovaneho vysledku. Mohl byste mne nekdo nakopnout jak na to?

Dekuji

Nahlásit jako SPAM
IP: 188.175.122.–
ingiraxo+15
Grafoman
6. 11. 2012   #2
-
0
-

nějak se mi nechce věřit, že na místě, kde přidáváš položku a následně voláš Refresh to neobnoví.. s DataGridem sice moc nedělám, ale určitě má nějakou událost, která oznamuje přidání položky a v ní stačí zavolat Refresh

viz. http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx

pokud si nikdy s delegátama nedělal, tak můžu dopočit menší tutoriál

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
neumel
~ Anonymní uživatel
4 příspěvky
6. 11. 2012   #3
-
0
-

#2 ingiraxo
Problem je, ze z druheho Formu "nevidim" na datagrid umisteny v prvnim Formu. Kdyz v tzv. rodicovskem formu vytvorim form na vlozeni noveho zaznamu tzn.

formAdd frmAdd = new formAdd();

frmAdd.ShowDialog();

Pak v tomto formu "frmAdd" nevidim na datagrid ve formu master (nemuzu tak ani zavolat refresh). Ted je tedy otazka jak takovou situaci resit. Ja myslel ze pomoci delegatu. Jestli ne pak se ptam jak?

Dekuju.

Nahlásit jako SPAM
IP: 188.175.122.–
ingiraxo+15
Grafoman
6. 11. 2012   #4
-
0
-

#3 neumel
pokud to máš takto, tak nepotřebuješ žádnej delegát...

1) v hlavní třídě, která obsahuje DataGrid si vytvoři veřejnou fci, která bude pouze volat obnovení DataDridu

2) ShowDialog má parametr rodiče, takže nastavíš ShowDialog(this);

3) v druhým formu (dialogu) jednoduše zavoláš obnovu jako Owner.FunkceProObnovu();

Owner pravděpodobně bude vracet Form, takže to musíš explicitně přetypovat na tvůj form

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
neumel
~ Anonymní uživatel
4 příspěvky
6. 11. 2012   #5
-
0
-

Takze za prve ingiraxo respekt! Moc dekuju!

A ted popis reseni pro blbe tedy jako ja:

Ve formu rodicovskem zobrazime form pro zadani:

formAdd frmAdd = new formAdd();

frmAdd.ShowDialog(this);

Ve tride tzv. rodicovskeho formu mame funkci pro refresh: public bool refreshDGV () { LoadData(); return true;} //zkraceny priklad

Ve formu "frmAdd" nebo v jakemkoliv kde to potrebujeme pak volame: (Owner as frmAdd).refreshDGV();

Dekuji za pomoc.

Nahlásit jako SPAM
IP: 188.175.122.–
ingiraxo+15
Grafoman
6. 11. 2012   #6
-
0
-

#5 neumel
jen bych nedoporučoval používat přetypování jako (Owner as frmAdd), protože při neuspěchu vrací null a funkci z null moc nezavoláš..takže použij ((frmAdd)Owner).funkce() (v případě chyby vyhodí aspon správnou chybu a né, že objekt je null)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
neumel
~ Anonymní uživatel
4 příspěvky
6. 11. 2012   #7
-
0
-

#6 ingiraxo
Upraveno dekuji za pouceni-zase sem o neco chytrejsi.

Nahlásit jako SPAM
IP: 188.175.122.–
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, 10 hostů

Podobná vlákna

Refresh formu — založil Eversmann

 

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